В PL / SQL вы можете указать значения для оператора IN с помощью конкатенации:
v_sql := 'select field1 from table1 where field2 in (' || v_list || ')';
Можно ли сделать то же самое с помощью переменной?
v_sql := 'select field1 from table1 where field2 in (:v_list)';
Если да, то как?
EDIT: Что касается ответа Marcin, как выбрать из результирующей таблицы?
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