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.