请教存储过程批处理的写法

[复制链接]
查看11 | 回复4 | 2005-10-30 17:05:33 | 显示全部楼层 |阅读模式
CREATE OR REPLACE procedure TMS.select_push_user (v_servid varchar2)
is
vv_mid varchar2(14);
vv_isdnvarchar2(12);
vv_status varchar2(2);
v_count number(10);
v_sql
varchar2(300);
v_send_count number(4);

cursor c_Subscriber_TDR(v_servid varchar2) IS
SELECT b.subsid,a.mid,a.icpid,a.servid,b.status subscriber_status,a.status subscription_status
FROM NILS_SUBSCRIPTION a, NILS_SUBSCRIBER b
WHERE a.status = 'A' AND a.mid = b.mid
and a.servid=v_servid;
begin

For c1 in c_Subscriber_TDR(v_servid ) loop--???????
if upper(c1.Subscriber_STATUS)='A' THEN
--??????????A??????????

select count(*)into v_count from get_data where mid=c1.mid; --?????????????
ifv_count =0then--?????????????????????????????????????????

insert into get_data values(c1.subsid,c1.mid,c1.icpid,c1.servid,c1.Subscriber_STATUS,0);

--insert into tab_push_user values(c1.subsid,c1.mid,c1.icpid,c1.servid,c1.Subscriber_STATUS,0,0,SEQ_SMS_NO.nextval);

commit;

else--?????????????,???????????

select status,mid,send_countinto vv_status,vv_mid,v_send_count from get_data where mid=c1.mid;

if vv_status='U' OR vv_status='N' then --????????????????????????????PUSH??

insert into tab_push_user values(c1.subsid,c1.mid,c1.icpid,c1.servid,c1.Subscriber_STATUS,v_send_count,1,SEQ_SMS_NO.nextval);

--else --??????????????????????PUSH??

--
insert into tab_push_user values (c1.subsid,c1.mid,c1.icpid,c1.servid,c1.Subscriber_STATUS,0,0,SEQ_SMS_NO.nextval);

end if;
end if;

--?????????????????????PUSH??????0.

update get_data set status=c1.Subscriber_STATUS,send_count=0 where mid=vv_mid;
commit;
else--????????????????????????????????,????????????????????
if upper(c1.Subscriber_STATUS)='U' or upper(c1.Subscriber_STATUS)='N' THEN

select count(*) into v_count from get_data where mid=c1.mid;

if v_count=0 then

insert into get_data values(c1.subsid,c1.mid,c1.icpid,c1.servid,c1.Subscriber_STATUS,1); --????????1

else--?????????????????????????

select status,send_count into vv_status,v_send_count from get_data where mid=c1.mid;

--??????????????????????????????????????????1

if upper(vv_status)='U' or upper(vv_status)='N' then

update get_data set send_count=send_count+1,status=c1.Subscriber_STATUS where mid=c1.mid;

else --????????????????????????????????????????????

update get_data set send_count=1,status=c1.Subscriber_STATUS where mid=c1.mid;

end if;

end if;
end if;
end if;
end loop;
commit;
--???????????PUSH??
-- select count(*) into v_count from tab_push_user where servid=v_servid and flag=1;

--????????????????????

-- insert into tab_proc_info values(to_date(sysdate,'yyyy-mm-dd hh24:mi:ss'),'11',v_servid,v_count);

-- commit;
--insert into tab_process values();
exception
WHEN NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR(-20009,'tet');
-- rollback;

WHEN TOO_MANY_ROWS THEN

RAISE_APPLICATION_ERROR(-20009,'test');

WHEN OTHERS THEN

RAISE_APPLICATION_ERROR(-20009,SQLERRM);
end;
/
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
这个过程能使用批处理吗
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
高手们,给点意见啊
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
晃眼睛
回复

使用道具 举报

千问 | 2005-10-30 17:05:33 | 显示全部楼层
好多问号,需求是什么?
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行