Můžete, pokud jste dostatečně liberální ve své definici "bez nutnosti měnit názvy proměnných" . Čtení báječného rozlišení názvů PL/SQL říká:
Pokud je identifikátor deklarován v pojmenované jednotce PL/SQL, můžete jeho jednoduchý název (název v jeho deklaraci) kvalifikovat názvem jednotky (blok, podprogram nebo balíček) pomocí této syntaxe:
unit_name.simple_identifier_name
Následující příklad vytiskne 20
podle očekávání:
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;
/
Názvy proměnných se nemění. Místo toho jsou hmm ... kvalifikovanější :)
Všimněte si, že následující nefunguje:
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;
/
Jako nekvalifikovaný a
v select
-příkaz je interpretován jako sloupec kvůli pravidlům priority:
Pokud příkaz SQL odkazuje na název, který patří jak ke sloupci, tak k lokální proměnné nebo formálnímu parametru, pak má název sloupce přednost.