Oracle
 sql >> база данни >  >> RDS >> Oracle

Име на SQL колона, същото като име на променлива PL/SQL - Как може да се направи това в оператор select?

Можете, ако сте достатъчно либерални в определението си за "без да е необходимо да променяте имената на променливите" . Четенето на страхотната 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 израз препраща към име, което принадлежи както на колона, така и на локална променлива или формален параметър, тогава името на колоната има предимство.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. EBS 12.2.5 и по-нови версии:Несъответствие на бутона на страницата за вход

  2. R12.2 Онлайн цикъл на корекция Резюме

  3. PL/SQL настройка на производителността за LIKE '%...%' заместващи заявки

  4. Bool поддръжка на Oracle SQL

  5. Как да конфигурирате подчертаване на синтаксиса в SQLcl