在oracle的存储过程中,传入一个varchar2型变量a(类型集合),a值为"'a1','a2'"查询在表t中满足出现a中类型的记录数,sql如下: select count(*) into v_count from t where type in(a); 问题是这样执行结果v_count为0,而执行 select count(*) into v_count from t where type in('a1','a2');结果数是正常的,请教应该如何修改? 不要告诉我使用instr函数,这个效率不能接受
最新回答
一澜冬雪
2024-09-25 04:09:05
我理解楼主的意思是这样的.这个静态使用有问题. 如果就直接这样执行的话, select count(*) into v_count from t where type in(a); 应该是有问题的. 可以这样尝试一下: a varchar2(N); execute immediate 'select count(1) from t where type in('||a||')' into v_count ; 还要注意传入的变量,引号别弄丢了... 应该是可以的,我没有测试,很久没有动过这些了.
泛滥的青春。放纵年纪丶
2024-09-25 00:09:23
不知道问题所在,你可以在存储过程中间把A给打印出来看一下,看是不是你说的这个值,如果是的话那看看 where type in(a);这里的语句连接是不是有问题,也可以把语句在执行前赋值给个变量打印出来看看~