Anda dapat melakukannya jika Anda cukup bebas dengan definisi Anda tentang "tanpa perlu mengubah nama variabel" . Membaca Resolusi Nama PL/SQL yang luar biasa mengatakan:
Jika pengenal dideklarasikan dalam unit bernama PL/SQL, Anda dapat mengkualifikasikan nama sederhananya (nama dalam deklarasinya) dengan nama unit (blok, subprogram, atau paket), menggunakan sintaks ini:
unit_name.simple_identifier_name
Contoh berikut akan mencetak 20
seperti yang diharapkan:
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;
/
Nama variabel tidak diubah. Malah mereka hmm...lebih mumpuni :)
Perhatikan yang berikut ini tidak berfungsi:
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;
/
Sebagai a
non yang tidak memenuhi syarat di select
-pernyataan ditafsirkan sebagai kolom karena aturan prioritas:
Jika pernyataan SQL mereferensikan nama yang termasuk dalam kolom dan variabel lokal atau parameter formal, maka nama kolom akan diutamakan.