美文网首页
一个简短的存储过程

一个简短的存储过程

作者: rollAway | 来源:发表于2016-06-22 16:21 被阅读63次

写了一个简短的循环插入数据的存储过程

CREATE OR REPLACE PROCEDURE MSGTORETIREDER

(IN_AAA027 IN VARCHAR2,IN_AAE002 IN NUMBER,IN_AAA079 in VARCHAR2) IS

pcxlh NUMBER(20);--批量序列号

n_aac001 NUMBER(20);--人员ID

n_num NUMBER(20);

Retmsg VARCHAR(100);

BEGIN

BEGIN

select t.aaa027 into Retmsg from DX.Sm_Key t where t.aaa027 = IN_AAA027;

Exception

when NO_DATA_FOUND THEN

RAISE_APPLICATION_ERROR(-20010, '当前统筹区不支持短信发放');

RETURN ;

END;

n_num := 0;

select count(*) into n_num from SMSLOG t where t.aaa079 = IN_AAA079 and t.aaa027 = IN_AAA027 and t.aae002 = IN_AAE002;

IF n_num>0 THEN

RAISE_APPLICATION_ERROR(-20010,IN_AAE002||'月短信已经发送,不能重复发送!');

RETURN ;

ELSE

begin

insert into SMSLOG(smsid,aaa079,aaa027,aae002)

values(

DX.Sm_Send_Xh.NEXTVAL,IN_AAA079,IN_AAA027,IN_AAE002

);

--循环找出当月发放所有的人

for cr IN (SELECT acd8.*

FROM acd8

WHERE acd8.aae140 = '120'

and acd8.aaa079 = '1'

and acd8.bac046 > 0

and (acd8.bae041 is null or acd8.bae041 = '0')

and acd8.aaa027 = IN_AAA027

and acd8.aae002 = IN_AAE002

and acd8.aaa079 = IN_AAA079) LOOP

n_aac001:=cr.aac001;

insert into DX.SM_SEND(xh,lx, nr, sfhm, scsj, zt, fssj,dsfs,bz,tjfssj,czy,aab001,pcxlh,aac001,cfcs,errcodes,aaa027 )

select DX.Sm_Send_Xh.NEXTVAL,'2',x.nr,x.aac067,sysdate,'0','','','','','',x.aab001,DX.Sm_Send_Pcxlh.NEXTVAL,x.aac001,'0','',IN_AAA027

from (

SELECT acd8.baz070,  ac01.aac003 ,ac01.aac001,  ac01.aac002 ,

SUM(decode(ac82.bae033,'0',ac82.bac046,0)) zcff,

SUM(decode(ac82.bae033,'0',0,ac82.bac046)) bkff,

sum(ac82.bac046) ffje, acd8.aae010,acd8.aae002,ac63.aac067,acd8.aab001,

'您'||acd8.aae002||'月应发养老金'||sum(ac82.bac046)||'元,'||(

case

when SUM(decode(ac82.bae033, '0', 0,ac82.bac046))> 0 then

'其中补发金额'||SUM(decode(ac82.bae033, '0', 0,ac82.bac046))||'元,'

when SUM(decode(ac82.bae033, '0', 0,ac82.bac046)) < 0 then

'其中补扣金额'||abs(SUM(decode(ac82.bae033, '0', 0,ac82.bac046)))||'元,'

else ''

end

)||'预计3天内发放至尾号'||substr(acd8.aae010,-4)||'的银行卡,'||'请注意查收。详情请咨询12333或单位。' nr

FROM acd8, ac82, ac01, ab01,ac63

WHERE acd8.baz070 = ac82.baz070

and acd8.aab001 = ab01.aab001

AND acd8.aac001 = ac01.aac001

and acd8.aae140 = '120'

and acd8.aac001 = ac63.aac001

and acd8.aaa079 = IN_AAA079 and acd8.bac046 > 0

and (acd8.bae041 is null or acd8.bae041='0')

and acd8.aaa027 = IN_AAA027

and acd8.aae002 = IN_AAE002

and acd8.aac001 = n_aac001

group BY ac01.aac003, ac01.aac001, ac01.aac002, acd8.baz070, acd8.aae010,acd8.aae002,ac63.aac067,acd8.aab001

order by ac01.aac003

) x;

END LOOP;

end;

END IF;

END ;

相关文章

  • 一个简短的存储过程

    写了一个简短的循环插入数据的存储过程 CREATE OR REPLACE PROCEDURE MSGTORETIR...

  • Oracle存储过程总结

    Oracle存储过程总结 1.存储过程结构 1.1 第一个存储过程 上面就是一个最简单的存储过程。一个存储过程大体...

  • Oracle存储过程基本结构说明

    1.存储过程结构 1.1第一个存储过程 上面是一个简单的存储过程实例.一个存储过程大体分为这么几个部分: 存储过程...

  • 存储过程

    详见存储过程详解 创建存储过程 使用存储过程 存储过程简介 什么是存储过程:存储过程可以说是一个记录集吧,它是由一...

  • MySQL存储过程

    存储过程 创建存储过程 执行存储过程 参数: 带有输入参数的存储过程 -- 需求:传入一个员工的id,查询员工信息...

  • [数据库][SqlServer]:存储过程

    无返回值的存储过程 有返回值的存储过程 返回一个集合的存储过程 传入的参数为一个集合的存储过程

  • PLSQL存储过程

    存储过程 关键字:procedure 存储过程是PLSQL的一个方面的应用,而PLSQL是存储过程的基础。即存储过...

  • Mysql存储过程

    阅读目录:MySQL存储过程_创建-调用-参数 存储过程:SQL中的“脚本” 创建存储过程 调用存储过程 存储过程...

  • 17 存储过程

    过程: 函数: 过程是没有返回值的函数 存储过程: 存储过程语法 存储过程1--创建简单的存储过程 存储过程2--...

  • SQL必知必会(存储过程)

    一、什么是存储过程,如何创建一个存储过程 存储过程的英文是 Stored Procedure。它的思想很简单,就是...

网友评论

      本文标题:一个简短的存储过程

      本文链接:https://www.haomeiwen.com/subject/celpdttx.html