求这样的存储过程如何写?

[复制链接]
查看11 | 回复9 | 2007-10-20 08:38:44 | 显示全部楼层 |阅读模式
Procedure GETSalesIsREJECT
(
v_Count IN OUT NUMBER(10),
v_PromotionIDs VARCHAR2(500)
)
select Count(reject) from
(Select reject From tsalespromotion where PKID in(v_PromotionIDs )) a
where a.reject='F'
end GETSalesIsREJECT;
v_Count 是我要返回数量;
v_PromotionIDs 是一段以逗号分割的id,id定长
如123,345,789,987
我如何把他们分割出来,并查询?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
各位高手没有能给出方法么?
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
select substr('123,345,789,987',1,instr('123,345,789,987',',',1,1)-1) from dual;
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
看你的需求只要测一下有几个逗号即可
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
Procedure GETSalesIsREJECT
(
v_Count IN OUT NUMBER(10),
v_PromotionIDs VARCHAR2(500)
)
V_NUM NUMBER:=1;
BEGIN
FOR I IN 1..4 LOOP
select SUBSTR(v_PromotionIDs,V_NUM,3) INTO V_OUT
from dual;
DBMS_OUTPUT.PUT_LINE(V_OUT);
V_NUM:=V_NUM+4;
END LOOP;
END;
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
我是说希望把ID,分割后,在通过这些id,查询出,=id的所有集合
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
最初由 peak_weng 发布
[B]我是说希望把ID,分割后,在通过这些id,查询出,=id的所有集合 [/B]

那循环一下即可
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
你只需要把123,345,789,987
转化为'123','345','789','987'
这样的集合就可以了啊
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
大家看看这个怎样:SELECT substr(REPLACE('123,345,789,987',','),(LEVEL-1)*3,3) nmFROM dual CONNECT BY LEVEL<=4
回复

使用道具 举报

千问 | 2007-10-20 08:38:44 | 显示全部楼层
http://zhouwf0726.itpub.net/post/9689/203877
http://zhouwf0726.itpub.net/post/9689/269709
第一个适用单条数据(字符串变量),第二个适合多条数据。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行