如果我正在执行下面的查询,它会给我4个正确的记录。Oracle:通过存储过程在查询中传递动态字符串
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;
这是为什么givign我0的记录。我做错了什么,通过传递临时temp6查询如SUBSCRIBER_NUM IN (temp6)
你有一个循环代码,所以它是PL/SQL。在PL/SQL中,你可以选择进入某个变量,而不仅仅是选择。你可以发布整个代码吗?或者只是描述你想在PL/SQL中做什么? – Kacper