Как передать несколько значений в условие запроса как параметр процедуры?
В хранимой процедуре есть запрос, который ищет по входному параметру input_param:
procedure tst (input_param in varchar2)
is
select
so_much_columns
from
so_much_tables
where
value in (input_param);
end tst;
При вызове процедуры нужно передавать два значения как параметр:
call tst.tst (input_param => 'Tst1, Tst2');
Но такое, конечно, не работает, т.к. для IN оператора input_param это одно значение.
Как можно решить, есть ли уже какие-то решения для этого случая?
Ответы (1 шт):
Автор решения: 0xdb
→ Ссылка
Надо поделить строку переданную как параметр по запятой на колонки таблицы.
Например так:
create table t1 as
select rownum id, cast (column_value as varchar2 (5)) value
from xmlTable ('"Tst1", "Tst2"');
create or replace procedure getrows (params varchar2) is
rc sys_refcursor;
begin
open rc for
select id, value
from t1
where value in (
select trim (column_value) params
from xmlTable (('"'||replace (params, ',', '","')||'"'))
);
dbms_sql.return_result (rc);
end;
/
exec getrows (params => 'Tst1, Tst2')
Результат:
ID VALUE
---------- -----
1 Tst1
2 Tst2