declare
l_str1 varchar2(1000);
l_str2 varchar2(1000);
l_num number;
begin
l_str1 := '(''广州市安达汽车零件有限公司'',''湖南机油泵股份有限公司'')';
select to_char(l_str1) into l_str2 from dual;
select count(*) into l_num from supplier s where s.sup_name in l_str1;
dbms_output.put_line(l_num);
end;
l_str1这个条件在表supplier有两条记录的,但为什么这样查询后变为0条。语法没有错误的。
l_str1 varchar2(1000);
l_str2 varchar2(1000);
l_num number;
begin
l_str1 := '(''广州市安达汽车零件有限公司'',''湖南机油泵股份有限公司'')';
select to_char(l_str1) into l_str2 from dual;
select count(*) into l_num from supplier s where s.sup_name in l_str1;
dbms_output.put_line(l_num);
end;
l_str1这个条件在表supplier有两条记录的,但为什么这样查询后变为0条。语法没有错误的。
in里面应该是一个集合,你却给了一个字符,这样肯定查不出来了直接这样写吧:
select count(*) into l_num from supplier s where s.sup_name in
('广州市安达汽车零件有限公司','湖南机油泵股份有限公司')
也可以是一个子查询 in(select a from tab)
如果是单个变量直接用 = 就好了
楼主应该懂得in的语法?
对传进来的参数进行分割,动态sql实现