В PL/SQL, можно указать значения для оператора IN с помощью конкатенации:Как вы определяете предложение IN в динамическом запросе с использованием переменной?
v_sql := 'select field1
from table1
where field2 in (' || v_list || ')';
Можно ли сделать то же самое с помощью переменной?
v_sql := 'select field1
from table1
where field2 in (:v_list)';
Если да, то как?
EDIT: Что касается ответа Марцина, как выбрать из результирующей таблицы?
declare
cursor c_get_csv_as_tables is
select in_list(food_list) food_list
from emp_food
where emp_type = 'PERM';
cursor c_get_food_list (v_food_table varchar2Table)is
select *
from v_food_table;
begin
for i in c_get_csv_as_tables loop
for j in c_get_food_list(i.food_list) loop
dbms_output.put_line(j.element);
end loop;
end loop;
end;
Я получаю следующее сообщение об ошибке:
ORA-06550: line 10, column 6:
PL/SQL: ORA-00942: table or view does not exist
ORA-06550: line 9, column 1:
PL/SQL: SQL Statement ignored
ORA-06550: line 15, column 34:
PLS-00364: loop index variable 'J' use is invalid
ORA-06550: line 15, column 13:
PL/SQL: Statement ignored
возможно дубликат [PL/SQL использование VARRAY в в Пункте] (http://stackoverflow.com/questions/8476610/pl- sql-use-varray-in-in-clause) – Sathya
@ Сатья, я не понимаю ... как это так? Мне нужно передать переменную связывания. Есть ли аналогичный способ сделать это? – Zesty
Я не понимал, что вы хотите связать. сказав, что, afaik, вы не можете использовать такую переменную связывания. – Sathya