Можете, ако сте достатъчно либерални в определението си за "без да е необходимо да променяте имената на променливите" . Четенето на страхотната PL/SQL разделителна способност на името казва:
Ако идентификатор е деклариран в наименувана PL/SQL единица, можете да квалифицирате простото му име (името в неговата декларация) с името на единицата (блок, подпрограма или пакет), като използвате този синтаксис:
unit_name.simple_identifier_name
Следният пример ще отпечата 20
както се очаква:
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;
/
Имената на променливите не се променят. Вместо това те са хм... по-квалифицирани :)
Обърнете внимание, че следното не работи:
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;
/
Като неквалифициран a
в select
-изявлението се интерпретира като колона поради правилата за приоритет:
Ако SQL израз препраща към име, което принадлежи както на колона, така и на локална променлива или формален параметър, тогава името на колоната има предимство.