、あなたは連結を使用IN演算子の値を指定することができます変数を使用して動的クエリにIN句を指定するにはどうすればよいですか? PL/SQLで
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
[IN句のPL/SQLの使用VARRAY]の可能な重複(http://stackoverflow.com/questions/8476610/pl- sql-use-var-in-in-clause) – Sathya
@Sathya私は理解していない...それはどうですか?私はバインド変数を渡す必要があります。これを行う同様の方法はありますか? – Zesty
私はバインドしたいとは思わなかった。あなたはそのようなバインド変数を使うことはできません。 – Sathya