Я пишу хранимую процедуру, которая нуждается в предложении WHERE IN с массивом чисел. Как я могу передать этот массив чисел в SP. Я подумал, что посылаю строку типа «123,234,345», а затем анализирую ее в SP перед использованием. Это хороший способ сделать это? Если да, то как я могу заставить работать приведенный ниже код?
CREATE OR REPLACE PROCEDURE sp_test2
(
ids in varchar2,
cursor_ OUT SYS_REFCURSOR
)
AS
BEGIN
OPEN cursor_ FOR
SELECT *FROM my_table
WHERE my_table.ID IN (
SELECT regexp_substr(ids,'[^:]+', 1, level) AS list FROM dual
CONNECT BY regexp_substr(ids, '[^:]+', 1, level) IS NOT NULL);
END;
/
Например (вместо кода преобразования) при использовании так: IN (ids) я получаю ORA-01722: ошибка неверного номера