Crea un tipo di raccolta:
CREATE TYPE stringlist IS TABLE OF VARCHAR2(100);
/
Quindi puoi passarlo a una procedura e utilizzare il MEMBER OF
operatore (anziché IN
operatore):
CREATE PROCEDURE Test (
in_list IN stringlist,
out_results OUT SYS_REFCURSOR
)
IS
BEGIN
OPEN out_results FOR
SELECT *
FROM your_table
WHERE your_column MEMBER OF in_list;
END;
/
Se ti stai connettendo da un linguaggio esterno puoi passare abbastanza facilmente un array alla procedura (esempio Java) oppure puoi creare l'elenco in PL/SQL o da un elenco delimitato.