【发布时间】:2012-02-16 13:37:13
【问题描述】:
在 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)';
如果有,怎么做?
编辑:参考 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
【问题讨论】:
-
@Sathya 我不明白......那怎么一样?我需要传递一个绑定变量。有没有类似的方法可以做到这一点?
-
我没有意识到你想绑定。话虽如此,afaik,你不能使用这样的绑定变量。
-
但你仍然可以像@Sathya 给你的链接中那样绑定一个可变数组
标签: sql oracle plsql dynamic-sql