存储过程系列一:宝玉初适阴雨情
通过一个月的编写存储过程,下面将简单的将自己写的存储过程写下来备份给自己:
(自己文笔有限,各位酌量学习)
1、创建存储过程格式:
创建过程语法:
create [or replace] procedure procedure_name
[ (argment [ { in| in out }] type,
argment [ { in | out | in out } ] type
{ is | as }
<类型.变量的说明>
( 注: 不用 declare 语句 )
Begin
<执行部分>
exception
<可选的异常处理说明>
end;
例如:
CREATE OR REPLACE PROCEDURE "XZXK_YLQXSCWT_BA_IN_SQ" (sqidIn in varchar2,
flag out varchar2
) is
上述是存储存储过程语句 创建或替换 ‘存储过程名称’ (条件 in\out\inout)
in:表示存储过程要传入的参数
out:表示要传出返回给程序的参数
in out:表示即可传入也可传出的参数
正式语句:
CREATE OR REPLACE PROCEDURE "XZXK_YLQXSCWT_BA_IN_SQ" (sqidIn in varchar2,
flag out varchar2
) is
-- 定义异常变量
v_raise EXCEPTION;
-- 定义使用变量
V_qbid VARCHAR2(32);
begin
-- 自定义一个32为全表主键
select sys_guid() into V_qbid from dual;
-- 将修改后的证面信息表数据插入 医疗器械生产许可信息全表
insert into xzxk_ylqxscwt_xx_qb
(qbid, sqid, babh, sqrq, sbh, slrq, slbh, bjbs, slzt, wtcpgllb, ssqxj, babm, barq, instnum, lastdate, datexc)
select V_qbid, sqid, babh, sqrq, sbh, slrq, slbh, bjbs, slzt, wtcpgllb, ssqxj, babm, barq, f_getslbs(),sysdate, '11' from xzxk_ylqxscwt_mz_ba_sq
where sqid=sqidIn;
-- 将委托受托信息表 委托信息更新到 信息全表中
-- 信息全表 委托
update xzxk_ylqxscwt_xx_qb set ( WTQYID, WTQYMC, WTYYXKHBABZ, WTYYZJLX, WTXKHZBAH ) =
( select WTSTXXID, QYMC , YYXKHBABZ , YYZJLX, XKHZBAH from XZXK_YLQXSCWT_MZ_BA_WTSTXX WHERE sqid=sqidIn AND WTSTBZ = '1' )
WHERE sqid=sqidIn;
-- 将委托受托信息表 委托信息更新到 信息全表中
-- 信息全表 受托
update xzxk_ylqxscwt_xx_qb set ( STQYID, STQYMC, STYYXKHBABZ, STYYZJLX2, STXKHZBAH ) =
( select WTSTXXID, QYMC , YYXKHBABZ , YYZJLX, XKHZBAH from XZXK_YLQXSCWT_MZ_BA_WTSTXX WHERE sqid=sqidIn AND WTSTBZ = '2' )
WHERE sqid=sqidIn;
-- 将修改后的 生产产品信息 插入到 委托生产产品信息全表
insert into xzxk_ylqxscwt_xx_sccp
(bzj, qbid, sqid, sxh, cpmc, zczh, wtqx, instnum, lastdate, datexc, sfyx)
select sys_guid(), V_qbid ,sqid, sxh, cpmc, zczh, wtqx, instnum, lastdate, datexc, '1' from xzxk_ylqxscwt_mz_ba_sccp where sqid=sqidIn ;
flag := 'Y';
commit;
-------------------------------------提交流程----查看是否有异常--------------
Exception
-- 判断条件 出现异常及未发现数据做如何处理
WHEN v_raise THEN
flag := 'N';
rollback;
WHEN NO_DATA_FOUND THEN
flag := 'E';
commit;
end XZXK_YLQXSCWT_BA_IN_SQ;