I am setting a bind variable in a PL / SQL block, and I am trying to use it in another query IN expression. Something like that:
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;
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);
And I get an error message (ORA-01722: Invalid number) in a request that is trying to use the bind variable in the "IN" list.
The yiels print statement '123','345', which I expect.
Is it possible to use such a binding variable, or should I try a different approach?
(using Oracle 10g)
Clarification:
This is for reconciliation. I want to run
select *
from some_table
where id in (select id from other_table where abc in ('&val1','&val2','&val3'))
, script ( ) . , , some_table . other_table , other_table, . other_table.id, .