oracle in的使用,求解

1、查询数据Where条件需要用到多个所以就用了in,in(参数通过SQL查询)IN的参数查到但是数据查询不到。

2、图片说明这个数据是IN的参数('A','B')

3、图片说明
这个是需要查询数据的表。

4、图片说明选中部分的IN是输入参数可以正常查询到数据。

5、图片说明
选中部分的IN是通过SQL查询取到参数,但是查询不到数据。

试下这个SQL

select * from b where 
instr((select value from a where id=1),value) > 0

嵌套语句中value是关键字,导致你查不出值,把字段名'value'改一下就行了

使用execute immediate方式,以下是完整示例
create table T_INSERT
(
val VARCHAR2(20)
);
insert into T_INSERT values('A','B');
create table T_INSERT_DATA
(
val VARCHAR2(100)
);
insert into T_INSERT_DATA values('A');
insert into T_INSERT_DATA values('B');
insert into T_INSERT_DATA values('C');
--测试PLSQL
declare
v_param varchar2(50) := '';
v_count number := 0;
v_sql varchar2(1000) := '';
begin
for i in (select t.val from T_INSERT t) loop
v_param := i.val;
dbms_output.put_line(v_param);
v_sql := 'select count(1) from T_INSERT_DATA d where d.val in (' ||v_param || ')';
dbms_output.put_line(v_sql);
execute immediate v_sql into v_count;
dbms_output.put_line(v_count);
end loop;
end;