存储过程系列一:宝玉初适阴雨情

通过一个月的编写存储过程,下面将简单的将自己写的存储过程写下来备份给自己:

(自己文笔有限,各位酌量学习)

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;

posted @ 2014-11-24 14:48  meimao5211  阅读(182)  评论(0编辑  收藏  举报