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

Mengirim nilai yang dibatasi koma ke klausa WHERE dalam prosedur tersimpan oracle

Idealnya, daripada meneruskan string tunggal yang terdiri dari nilai yang dipisahkan koma, Anda akan meneruskan koleksi. Jika Anda memiliki sesuatu seperti

CREATE TYPE value_tbl AS TABLE OF VARCHAR2(10);

maka Anda dapat meneruskan koleksi itu ke dalam prosedur Anda dan menggunakannya dalam WHERE klausa

CREATE OR REPLACE PROCEDURE procedure_name( p_values IN value_tbl )
AS
  ...
BEGIN
  FOR i IN (SELECT *
              FROM table_name
             WHERE column_name IN (SELECT *
                                     FROM TABLE( p_values )))
  LOOP
    ...
  END LOOP;
END;

Jika Anda benar-benar perlu memasukkan string yang dipisahkan koma, Anda dapat menentukan jenis koleksi yang sama dan kemudian mengurai string untuk mengisi koleksi menggunakan sesuatu seperti str2tbl Tom Kyte fungsi . Tapi itu akan menjadi kurang efisien daripada mengirimkan koleksi untuk memulai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menginstal GCC di Oracle Solaris 11

  2. Mencari nilai NULL untuk Tipe Oracle yang berbeda

  3. Praktik yang baik untuk menggunakan indeks terbalik pada kunci pengganti? (Peramal)

  4. Masukkan string uji BLOB yang lebih besar dari 2000 atau 4000 byte

  5. Kesalahan ORA-00942 dihasilkan saat membuat tampilan