Bạn có thể làm được nếu bạn đủ tự do về định nghĩa của mình về "mà không cần thay đổi tên biến" . Đọc Phân giải tên PL / SQL tuyệt vời cho biết:
Nếu một số nhận dạng được khai báo trong một đơn vị PL / SQL có tên, bạn có thể xác định tên đơn giản của nó (tên trong khai báo) với tên của đơn vị (khối, chương trình con hoặc gói), sử dụng cú pháp sau:
unit_name.simple_identifier_name
Ví dụ sau sẽ in 20
như mong đợi:
create table foo (a number, b number);
insert into foo values(1, 10);
insert into foo values(2, 20);
insert into foo values(3, 30);
begin
<<bar>>
declare
a number;
b number;
begin
a := 2;
select b into bar.b from foo where a = bar.a;
dbms_output.put_line(b);
end;
end;
/
Tên biến không được thay đổi. Thay vào đó, họ hmm ... đủ điều kiện hơn :)
Lưu ý rằng những điều sau không hoạt động:
begin
declare
a number;
b number;
begin
a := 2;
select foo.b into b from foo where foo.a = a;
dbms_output.put_line(b);
end;
end;
/
Là a
không đủ điều kiện trong select
-statement được hiểu là một cột vì các quy tắc ưu tiên:
Nếu câu lệnh SQL tham chiếu đến tên thuộc cả cột và biến cục bộ hoặc tham số hình thức thì tên cột sẽ được ưu tiên.