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

Bagaimana cara menggunakan konstanta paket dalam pernyataan SQL SELECT?

Anda tidak bisa.

Untuk variabel paket publik yang akan digunakan dalam pernyataan SQL, Anda harus menulis fungsi pembungkus untuk mengekspos nilai ke dunia luar:

SQL> create package my_constants_pkg
  2  as
  3    max_number constant number(2) := 42;
  4  end my_constants_pkg;
  5  /

Package created.

SQL> with t as
  2  ( select 10 x from dual union all
  3    select 50 from dual
  4  )
  5  select x
  6    from t
  7   where x < my_constants_pkg.max_number
  8  /
 where x < my_constants_pkg.max_number
           *
ERROR at line 7:
ORA-06553: PLS-221: 'MAX_NUMBER' is not a procedure or is undefined

Buat fungsi pembungkus:

SQL> create or replace package my_constants_pkg
  2  as
  3    function max_number return number;
  4  end my_constants_pkg;
  5  /

Package created.

SQL> create package body my_constants_pkg
  2  as
  3    cn_max_number constant number(2) := 42
  4    ;
  5    function max_number return number
  6    is
  7    begin
  8      return cn_max_number;
  9    end max_number
 10    ;
 11  end my_constants_pkg;
 12  /

Package body created.

Dan sekarang berhasil:

SQL> with t as
  2  ( select 10 x from dual union all
  3    select 50 from dual
  4  )
  5  select x
  6    from t
  7   where x < my_constants_pkg.max_number()
  8  /

         X
----------
        10

1 row selected.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nonaktifkan dan kemudian aktifkan semua indeks tabel di Oracle

  2. Contoh Pernyataan Oracle FOR LOOP SELECT

  3. ORA-01036:nama/nomor variabel ilegal saat menjalankan kueri melalui C#

  4. Kueri rekursif SQL pada tabel referensi mandiri (Oracle)

  5. Melewati array data sebagai parameter input ke prosedur Oracle