我在 PL/SQL 块中设置了一个绑定变量,并试图在另一个查询的 IN 表达式中使用它。像这样的东西:
variable x varchar2(255)
declare
x varchar2(100);
begin
for r in (select id from other_table where abc in ('&val1','&val2','&val3') ) loop
x := x||''''||r.id||''',';
end loop;
--get rid of the trailing ','
x:= substr(x,1,length(x)-1);
select x into :bind_var from dual;
end;
/
print :bind_var;
select *
from some_table
where id in (:bind_var);
我在尝试使用“IN”列表中的绑定变量的查询中收到错误(ORA-01722:无效号码)。
打印语句的结果'123','345'
是我所期望的。
是否可以像这样使用绑定变量,还是应该尝试不同的方法?
(使用 Oracle 10g)
澄清:
这是为了和解之类的事情。我想跑
select *
from some_table
where id in (select id from other_table where abc in ('&val1','&val2','&val3'))
在脚本的主要部分(此处未显示)删除一大堆记录之前。之后我想再次运行它以验证其中的记录some_table
是否未被删除。但是,other_table
此过程确实删除了中的数据,因此我不能仅引用其中的数据,other_table
因为那里什么都没有。我需要一种方法来保留这些other_table.id
值,以便以后可以验证父记录。