Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Nama kolom SQL sama dengan nama variabel PL/SQL - Bagaimana ini bisa dilakukan dalam pernyataan pilih?

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. CSV di Pengembang SQL…

  2. Memuat Data Gambar ke Kolom BLOB di Oracle

  3. Apa yang salah dengan PL/SQL ini? Variabel Bind * TIDAK DINYATAKAN

  4. cara menulis kueri sql

  5. Perluas Kontrol Grid EM ke Node Baru