【发布时间】:2017-04-03 22:31:19
【问题描述】:
如果我执行下面的查询,它会给我 4 条正确的记录。
select SUBSCRIBER_NUM, SUBSCRIBER_STATUS, P_ID
from C_S_FORWARD_INFO
where SUBSCRIBER_NUM IN ('0', '07', '070', '0705', '07052', '070526', '0705262', '07052620') and
SCP_VER = 1
但是当我在下面执行时,它给了我 0 条记录。实际上我必须在查询的“IN”部分动态传递值。
我在下面尝试过(VAR_CALLING_NUM = 07052620):
while var1<=len LOOP
temp1 := SUBSTR(VAR_CALLING_NUM, 1, var1);
temp1 := concat('''',temp1);
temp1 := concat(temp1,'''');
temp6 := temp6 || temp1 || ',' ;
var1:=var1+1;
END LOOP;
temp6 := SUBSTR(temp6, 1,length(temp6)-1);
select SUBSCRIBER_NUM, SUBSCRIBER_STATUS, P_ID from C_S_FORWARD_INFO where SUBSCRIBER_NUM IN ( temp6 ) and SCP_VER = 1 order by length(subscriber_num) desc;
为什么给我 0 条记录。通过在SUBSCRIBER_NUM IN ( temp6 )之类的查询中传递temp6,我做错了什么吗
【问题讨论】:
-
你有一个循环代码,所以它是 PL/SQL。在 PL/SQL 中,您可以选择某些变量,而不仅仅是选择。您能否发布完整的代码,或者只是描述您想在 PL/SQL 中做什么?
标签: sql oracle stored-procedures oracle11g