Im Idealfall übergeben Sie anstelle einer einzelnen Zeichenfolge, die aus durch Kommas getrennten Werten besteht, eine Sammlung. Wenn Sie so etwas wie
CREATE TYPE value_tbl AS TABLE OF VARCHAR2(10);
dann könnten Sie diese Sammlung an Ihre Prozedur übergeben und sie in einem WHERE
verwenden Klausel
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;
Wenn Sie wirklich eine durch Kommas getrennte Zeichenfolge übergeben müssen, können Sie denselben Sammlungstyp definieren und dann die Zeichenfolge analysieren, um die Sammlung mit etwas wie Tom Kytes str2tbl
Funktion
. Aber das wird weniger effizient sein, als zunächst eine Sammlung zu übergeben.