存储过程IF --ELSE IF -- END IF 使用
CREATE OR REPLACE PROCEDURE BJPJYXK_HF_SD(
sqid_p IN VARCHAR2,--申请单ID
xkbh_p IN VARCHAR2,--新生成的许可证编号
flag OUT VARCHAR2--标识位
)
AS
ywlx VARCHAR2(50);--业务类型(0:新办,1:变更)
v_raise EXCEPTION;--自定义异常
zsid_p VARCHAR2(50);--许可证ID
yxkzh_p VARCHAR2(50);--原许可证编号
xkzlx_p VARCHAR2(50);--许可证类型
v_xkzh varchar2(50); --京药到京食药临时变量
BEGIN
-- routine body goes here, e.g.
DBMS_OUTPUT.PUT_LINE('==============许可证核发审定开始================');
--获取许可证类型
SELECT YWLX INTO ywlx FROM XZXK_BJPJYWS_HF_SQ WHERE SQID=sqid_p;
--许可证类型
SELECT xkzlx INTO xkzlx_p FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p;
--获取受理阶段生成许可证信息记录
SELECT ZSID,XMZH INTO zsid_p,yxkzh_p FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p;
--更新许可证信息
IF ywlx = '0' THEN
IF xkzlx_p = '1' THEN--经营新许可证号
--update gg_xkz_bjpscws set czzt='I',DATEXC='11',INSTNUM=f_getslbs(),LASTDATE=sysdate where czzt='V' and XMZH=xkbh_p;
UPDATE gg_xkz_bjpscws set
XMZH = xkbh_p,
FZRQ = to_char(SYSDATE,'yyyymmdd'),
YXQQSRQ = to_char(SYSDATE,'yyyymmdd'),
YXQJZRQ = to_char(add_months(sysdate, 48) - 1,'yyyymmdd'),
XKZZT = '1',
DYBS = '000',
GSBS = 'N',
CZZT = 'V',
INSTNUM = f_getslbs(),
LASTDATE = sysdate,
DATEXC = '11'
WHERE ZSID = zsid_p;
--更新申请表许可证号
UPDATE XZXK_BJPJYWS_HF_SQ SET BJBS='Y',DATEXC='11',INSTNUM=f_getslbs(),LASTDATE=sysdate WHERE sqid=sqid_p;
--将申请表插入全部信息表中
INSERT INTO XZXK_BJPSCWS_XX_QB
(XKZID,XKZH,qyid,QYMC,QYXZ,QYZCDZ,QYZCDZSZQX,QYZCDZSZJD,QYZCDZYZBM,JYDZ,JYDZSZQX,JYDZSZJD,JYDZYZBM,BGDZ,BGDZSZQX,BGDZSZJD,
BGDZYZBM,FDDBR,ZGRS,YTJRS,GDZC,SYMJ,TJCLLX,BGCS,XKFW,QTCL,DATEXC,XKZLX,INSTNUM,LASTDATE,LXR,LXDH)
SELECT zsid_p,xkbh_p,QYID,QYMC,QYXZ,QYZCDZ,QYZCDZSZQX,QYZCDZSZJD,QYZCDZYZBM,JYDZ,JYDZSZQX,JYDZSZJD,JYDZYZBM,BGDZ,BGDZSZQX,BGDZSZJD,
BGDZYZBM,FDDBR,ZGRS,YTJRS,GDZC,SYMJ,'','',XKXM,QTCL,'11',XKZLX,f_getslbs(),sysdate,LXR,LXDH
FROM XZXK_BJPJYWS_HF_SQ WHERE SQID=sqid_p;
--更新全表信息(根据许可证信息)
UPDATE XZXK_BJPSCWS_XX_QB SET (XKZZT,FZRQ,SCFZRQ,YXQQSRQ,YXQJZRQ,ZZJGDM,FZJGDM,FZJGMC,DYBS,GSBS,XKZLX,QYMC,FDDBR,QYZCDZ,BGDZ,JYDZ,JYDZSZQX,JYDZSZJD,XKFW)=
(SELECT XKZZT,FZRQ,FZRQ,YXQQSRQ,YXQJZRQ,ZZJGDM,FZJGDM,FZJGMC,DYBS,GSBS,XKZLX,QYMC,FDDBR,QYDZ,BGDZ,JYDZ,JYDZSZQX,JYDZSZJD,XKFW
FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p) WHERE xkzid=zsid_p;
--插入人员信息表
INSERT INTO XZXK_BJPSCWS_XX_RYXX(ZJ,XKZH,QYID,XM,ZJLX,ZJH,XL,SXZY,ZC,INSTNUM,LASTDATE,DATEXC,XKZID)
SELECT sys_guid(),xkbh_p,QYID,FDDBR,ZJLX,ZJH,XL,SXZY,ZC,f_getslbs(),sysdate,'11',zsid_p
FROM XZXK_BJPJYWS_HF_SQ WHERE SQID=sqid_p;
UPDATE xzxk_bjpscws_xx_ryxx SET(xm)=
(SELECT FDDBR
FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p) WHERE xkzid=zsid_p;
ELSIF xkzlx_p = '3' THEN--生产使用经营许可证号
--更新生产许可证为无效
update gg_xkz_bjpscws set czzt='I',DATEXC='11',INSTNUM=f_getslbs(),LASTDATE=sysdate where czzt='V' and XMZH=yxkzh_p;
-- 将京药变更为京食药
v_xkzh := REPLACE(yxkzh_p, '京药', '京食药');
--新许可证为有效
UPDATE gg_xkz_bjpscws set
XMZH = v_xkzh,
FZRQ = to_char(SYSDATE,'yyyymmdd'),
YXQQSRQ = to_char(SYSDATE,'yyyymmdd'),
YXQJZRQ = to_char(add_months(sysdate, 48) - 1,'yyyymmdd'),
XKZZT = '1',
DYBS = '000',
GSBS = 'N',
CZZT = 'V',
INSTNUM = f_getslbs(),
LASTDATE = sysdate,
DATEXC = '11'
WHERE ZSID = zsid_p;
--更新申请表许可证号
UPDATE XZXK_BJPJYWS_HF_SQ SET BJBS='Y',DATEXC='11',INSTNUM=f_getslbs(),LASTDATE=sysdate WHERE sqid=sqid_p;
--数据交换删除使用
/* INSERT INTO PUB_TABLE_DATA_DELEXC(id, tablename,tablepkname,tablepk,delflag,instnum,lastdate,datexc)
select sys_guid(),'XZXK_BJPSCWS_XX_QB','XKZID',xkzid as tablepk,'N',f_getslbs(),sysdate, '11'
from XZXK_BJPSCWS_XX_QB where xkzh=yxkzh_p;
*/
--将申请表插入全部信息表中
update XZXK_BJPSCWS_XX_QB set
(XKZH,qyid,QYMC,QYXZ,QYZCDZ,QYZCDZSZQX,QYZCDZSZJD,QYZCDZYZBM,JYDZ,JYDZSZQX,JYDZSZJD,JYDZYZBM,BGDZ,BGDZSZQX,BGDZSZJD,
BGDZYZBM,FDDBR,ZGRS,YTJRS,GDZC,SYMJ,TJCLLX,BGCS,XKFW,QTCL,DATEXC,XKZLX,INSTNUM,LASTDATE,LXR,LXDH)
=(SELECT v_xkzh,QYID,QYMC,QYXZ,QYZCDZ,QYZCDZSZQX,QYZCDZSZJD,QYZCDZYZBM,JYDZ,JYDZSZQX,JYDZSZJD,JYDZYZBM,BGDZ,BGDZSZQX,BGDZSZJD,
BGDZYZBM,FDDBR,ZGRS,YTJRS,GDZC,SYMJ,'','',XKXM,QTCL,'11',XKZLX,f_getslbs(),sysdate,LXR,LXDH
FROM XZXK_BJPJYWS_HF_SQ WHERE SQID=sqid_p) where xkzh=yxkzh_p;
--更新全表信息(根据许可证信息)
UPDATE XZXK_BJPSCWS_XX_QB SET (XKZZT,FZRQ,SCFZRQ,YXQQSRQ,YXQJZRQ,ZZJGDM,FZJGDM,FZJGMC,DYBS,GSBS,XKZLX,QYMC,FDDBR,QYZCDZ,BGDZ,SCDZ,SCDZSZQX,SCDZSZJD,XKFW)=
(SELECT XKZZT,FZRQ,FZRQ,YXQQSRQ,YXQJZRQ,ZZJGDM,FZJGDM,FZJGMC,DYBS,GSBS,XKZLX,QYMC,FDDBR,QYDZ,BGDZ,SCDZ,SCDZSZQX,SCDZSZJD,XKFW
FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p) where xkzh=v_xkzh;
--数据交换删除使用 人员表
INSERT INTO PUB_TABLE_DATA_DELEXC(id, tablename,tablepkname,tablepk,delflag,instnum,lastdate,datexc)
select sys_guid(),'xzxk_bjpscws_xx_ryxx','zj',zj as tablepk,'N',f_getslbs(),sysdate, '11' from xzxk_bjpscws_xx_ryxx where xkzh=yxkzh_p;
delete xzxk_bjpscws_xx_ryxx where xkzh=yxkzh_p;
--插入人员信息表
INSERT INTO XZXK_BJPSCWS_XX_RYXX(ZJ,XKZH,QYID,XM,ZJLX,ZJH,XL,SXZY,ZC,INSTNUM,LASTDATE,DATEXC,XKZID)
SELECT sys_guid(),v_xkzh,QYID,FDDBR,ZJLX,ZJH,XL,SXZY,ZC,f_getslbs(),sysdate,'11',zsid_p
FROM XZXK_BJPJYWS_HF_SQ WHERE SQID=sqid_p;
UPDATE xzxk_bjpscws_xx_ryxx SET(xm)=
(SELECT FDDBR
FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p) WHERE xkzid=zsid_p;
ELSE
Raise v_raise;
END IF;
ELSIF ywlx = '1' THEN
--把原来的有效许可证更改为无效
update gg_xkz_bjpscws set czzt='I',DATEXC='11',INSTNUM=f_getslbs(),LASTDATE=sysdate where czzt='V' and XMZH=yxkzh_p;
--处理上线前的许可证号把京药改成京食药
if instr(yxkzh_p,'京药')>0 then
v_xkzh:=replace(yxkzh_p,'京药','京食药');
else
v_xkzh:=yxkzh_p;
end if;
--更新许可证
UPDATE GG_XKZ_BJPSCWS
SET FZRQ = to_char(SYSDATE,'yyyymmdd'),
YXQQSRQ = to_char(SYSDATE,'yyyymmdd'),
XMZH = v_xkzh,
XKZZT = '1',
DYBS = '000',
GSBS = 'N',
CZZT = 'V',
INSTNUM = f_getslbs(),
LASTDATE = sysdate,
DATEXC = '11'
WHERE ZSID = zsid_p;
--更新申请表许可证号
UPDATE XZXK_BJPJYWS_HF_SQ SET BJBS='Y',DATEXC='11',INSTNUM=f_getslbs(),LASTDATE=sysdate WHERE sqid=sqid_p;
--数据交换删除使用
--INSERT INTO PUB_TABLE_DATA_DELEXC(id, tablename,tablepkname,tablepk,delflag,instnum,lastdate,datexc)
-- select sys_guid(),'xzxk_bjpscws_xx_qb','XKZID',xkzid as tablepk,'N',f_getslbs(),sysdate, '11'
-- from XZXK_BJPSCWS_XX_QB where xkzh=yxkzh_p;
--更新全表信息
UPDATE XZXK_BJPSCWS_XX_QB
SET(XKZH,QYID,QYMC,QYXZ,QYZCDZ,QYZCDZSZQX,QYZCDZSZJD,QYZCDZYZBM,JYDZ,JYDZSZQX,JYDZSZJD,JYDZYZBM,BGDZ,BGDZSZQX,BGDZSZJD,
BGDZYZBM,FDDBR,ZGRS,YTJRS,GDZC,SYMJ,TJCLLX,BGCS,XKFW,QTCL,DATEXC,XKZLX,INSTNUM,LASTDATE,LXR,LXDH)=
(SELECT v_xkzh,QYID,QYMC,QYXZ,QYZCDZ,QYZCDZSZQX,QYZCDZSZJD,QYZCDZYZBM,JYDZ,JYDZSZQX,JYDZSZJD,JYDZYZBM,BGDZ,BGDZSZQX,BGDZSZJD,
BGDZYZBM,FDDBR,ZGRS,YTJRS,GDZC,SYMJ,'','',XKXM,QTCL,'11',XKZLX,f_getslbs(),sysdate,LXR,LXDH
FROM XZXK_BJPJYWS_HF_SQ WHERE SQID=sqid_p)
WHERE XKZH=yxkzh_p;
--更新全表信息(根据许可证信息)
UPDATE XZXK_BJPSCWS_XX_QB SET(XKZZT,FZRQ,SCFZRQ,YXQQSRQ,YXQJZRQ,ZZJGDM,FZJGDM,FZJGMC,DYBS,GSBS,XKZLX,QYMC,FDDBR,QYZCDZ,BGDZ,SCDZ,SCDZSZQX,SCDZSZJD,XKFW)=
(SELECT XKZZT,FZRQ,FZRQ,YXQQSRQ,YXQJZRQ,ZZJGDM,FZJGDM,FZJGMC,DYBS,GSBS,XKZLX,QYMC,FDDBR,QYDZ,BGDZ,SCDZ,SCDZSZQX,SCDZSZJD,XKFW
FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p) WHERE xkzid=zsid_p;
--数据交换删除使用 人员表
INSERT INTO PUB_TABLE_DATA_DELEXC(id, tablename,tablepkname,tablepk,delflag,instnum,lastdate,datexc)
select sys_guid(),'xzxk_bjpscws_xx_ryxx','zj',zj as tablepk,'N',f_getslbs(),sysdate, '11'
from xzxk_bjpscws_xx_ryxx where xkzh=yxkzh_p;
delete xzxk_bjpscws_xx_ryxx where xkzh=yxkzh_p;
--插入人员表
insert into xzxk_bjpscws_xx_ryxx
(zj,xkzh,qyid,xm,zjlx,zjh,xl,sxzy,zc,instnum,lastdate,datexc,xkzid)
select sys_guid(),v_xkzh,qyid,fddbr,zjlx,zjh,xl,sxzy,zc,f_getslbs(),sysdate,'11',zsid_p
from XZXK_BJPJYWS_HF_SQ where sqid=sqid_p;
UPDATE xzxk_bjpscws_xx_ryxx SET(xm)=
(SELECT FDDBR
FROM GG_XKZ_BJPSCWS WHERE SQID=sqid_p) WHERE xkzid=zsid_p;
DBMS_OUTPUT.PUT_LINE('==============许可证核发审定结束================');
ELSE
Raise v_raise;
END IF;
commit;
Exception
WHEN v_raise THEN
flag := 'N';
DBMS_OUTPUT.PUT_LINE('==============未找到指定业务类型================');
rollback;
WHEN NO_DATA_FOUND THEN
flag := 'N';
rollback;
WHEN others THEN
flag := 'N';
rollback;
END BJPJYXK_HF_SD;
存储过程IF --ELSE IF -- END IF 使用的更多相关文章
- 将表里的数据批量生成INSERT语句的存储过程 增强版
将表里的数据批量生成INSERT语句的存储过程 增强版 有时候,我们需要将某个表里的数据全部或者根据查询条件导出来,迁移到另一个相同结构的库中 目前SQL Server里面是没有相关的工具根据查询条件 ...
- Dapper逆天入门~强类型,动态类型,多映射,多返回值,增删改查+存储过程+事物案例演示
Dapper的牛逼就不扯蛋了,答应群友做个入门Demo的,现有园友需要,那么公开分享一下: 完整Demo:http://pan.baidu.com/s/1i3TcEzj 注 意 事 项:http:// ...
- MySQL主从环境下存储过程,函数,触发器,事件的复制情况
下面,主要是验证在MySQL主从复制环境下,存储过程,函数,触发器,事件的复制情况,这些确实会让人混淆. 首先,创建一张测试表 mysql),age int); Query OK, rows affe ...
- mysql进阶之存储过程
往往看别人的代码会有这样的感慨: 看不懂 理还乱 是离愁 别是一番滋味在心头 为什么要使用存储过程? 在mysql开发中使用存储过程的理由: 当希望在不同的应用程序或平台上执行相同的函数,或者封装特定 ...
- MySQL 系列(三)你不知道的 视图、触发器、存储过程、函数、事务、索引、语句
第一篇:MySQL 系列(一) 生产标准线上环境安装配置案例及棘手问题解决 第二篇:MySQL 系列(二) 你不知道的数据库操作 第三篇:MySQL 系列(三)你不知道的 视图.触发器.存储过程.函数 ...
- 参数探测(Parameter Sniffing)影响存储过程执行效率解决方案
如果SQL query中有参数,SQL Server 会创建一个参数嗅探进程以提高执行性能.该计划通常是最好的并被保存以重复利用.只是偶尔,不会选择最优的执行计划而影响执行效率. SQL Server ...
- MSSQL 事务,视图,索引,存储过程,触发器
事务 事务是一种机制.是一种操作序列,它包含了一组数据库操作命令,这组命令要么全部执行,要么全部不执行. 在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的.这特别适用于多用户同时操作的数据 ...
- Mysql - 存储过程/自定义函数
在数据库操作中, 尤其是碰到一些复杂一些的系统, 不可避免的, 会用到函数/自定义函数, 或者存储过程. 实际项目中, 自定义函数和存储过程是越少越好, 因为这个东西多了, 也是一个非常难以维护的地方 ...
- SQL Server存储过程
创建于2016-12-24 16:12:19 存储过程 概念: 1.存储过程是在数据库管理系统中保存的.预先编译的.能实现某种功能的SQL程序,它是数据库应用中运用比较广泛的 一种数据对象. 2.存储 ...
- SQL Server 批量删除存储过程
原理很简单的'drop proc xxx'即可,下面有提供了两种方式来删除存储过程,其实本质是相同的,方法一是生成删除的sql后直接执行了,方法二会生成SQL,但需要检查后执行,个人推荐第二种做法. ...
随机推荐
- struts2学习笔记2 -struts2的开发步骤和工作原理
struts2的开发步骤: 1.先定义一个能发送请求的页面,可以是链接,也可以是表单(form) 2.开发action类,struts2对action并没有过多的要求,只要求: a 推荐实现actio ...
- SQLSERVER 2008 链接 到 ORACLE 11
MSSQL2008R2 链接 ORACLE 11: 创建链接: exec sp_addlinkedserver 'DBLINK_ORACL' , 'ORACLE' , 'MSDAORA' , 'ORC ...
- centos部署Python环境
在centos上部署Python之前,我们需要先配置开发环境. 1.安装Python依赖的开发工具包 gcc自然少不了,可以直接用“Development Tools”: yum grouplist ...
- mysql解决中文乱码
mysql>use mydb; mysql>alter database mydb character set utf8;! 这种方法只对设置后重新创建的表有效,对已存在的表无效 des ...
- 11-利用session校验图片认证码
/****************************************************************产生随机验证码的servlet******************** ...
- 【转载】【selenium+Python WebDriver】之元素定位
总结: 感谢: “煜妃”<Selenuim+Python之元素定位总结及实例说明> “Huilaojia123”<selenium WebDriver定位元素学习总结> “上海 ...
- Java正确获取客户端真实IP方法整理
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...
- php字符串中 转义字符 “ ’‘ ” ’ “” ‘ " \’ ' ' \‘ " " \" '' \ " " 使用
<?php echo $str_string1='甲问:"你在哪里学的PHP?"'; echo "<br />"; echo $str_str ...
- COGS1532. [IOI2001]移动电话
1532. [IOI2001]移动电话 ★☆ 输入文件:mobilephones.in 输出文件:mobilephones.out 简单对比时间限制:5 s 内存限制:256 MB [ ...
- Unix环境高级编程—进程控制(二)
一.函数wait和waitpid 今天我们继续通过昨天那个死爹死儿子的故事来讲(便于记忆),现在看看wait和waitpid函数. #include<sys/wait.h> pid_t w ...