sql >> Databáze >  >> RDS >> Oracle

Název sloupce SQL stejný jako název proměnné PL/SQL - Jak to lze provést v příkazu select?

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.



  1. Existuje způsob, jak definovat pojmenovanou konstantu v dotazu PostgreSQL?

  2. Funkce IndexOf v T-SQL

  3. Závislosti Oracle.DataAccess.Client

  4. Nahradit více znaků v řetězci v SQL Server (T-SQL)