`
Sehoney
  • 浏览: 40189 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

存储过程Body写法

阅读更多
PACKAGE
CREATE OR REPLACE PACKAGE PV_ITEM_PKG IS
    -------------------------------------------------
    -- REM.1.0 过程名:ITEM_APPLY
    -- REM.1.1 描述:指标申请
    ------------------------------------------------- 
    PROCEDURE ITEM_APPLY_PROC(
       I_ORG_CODE       IN  VARCHAR2,
       I_PERSON_CODE    IN  VARCHAR2,
       I_DEPT_CODE      IN  VARCHAR2,
       I_UP_DEPT_CODE   IN  VARCHAR2,
       I_ITEM_STATE     IN  VARCHAR2,
       I_APPLY_REASON   IN  VARCHAR2,  --表单信息
       I_ITEM_NAME      IN  VARCHAR2,  --指标信息
       I_BASE_TYPE      IN  VARCHAR2,  
       I_ITEM_UNIT      IN  VARCHAR2, 
       I_ITEM_EXPLAIN   IN  VARCHAR2,
       I_ITEM_COM_FLAG  IN  VARCHAR2,
       I_ITEM_TYPE      IN  VARCHAR2,
       I_IS_ALL         IN  VARCHAR2,
      
       O_APPLY_ID       OUT VARCHAR2,
       O_RETURN         OUT VARCHAR2,
       O_MSG            OUT VARCHAR2
    );
    -------------------------------------------------
    -- REM.1.0 过程名:ITEM_AUDIT
    -- REM.1.1 描述:指标审核
    ------------------------------------------------- 
    PROCEDURE ITEM_AUDIT_PROC(
       I_APPLY_ID       IN  VARCHAR2,
       I_ORG_CODE       IN  VARCHAR2,
       I_PERSON_CODE    IN  VARCHAR2,
       I_DEPT_CODE      IN  VARCHAR2,  --表单信息
       I_AUDIT_STATE    IN  VARCHAR2,  --审核信息
       I_REMARK         IN  VARCHAR2,
      
       O_RETURN         OUT VARCHAR2,
       O_MSG            OUT VARCHAR2
    );
  
END PV_ITEM_PKG;


PACKAGE BODY
CREATE OR REPLACE PACKAGE BODY PV_ITEM_PKG IS

TYPE DATA_CUR IS REF CURSOR;

-------------------------------------------------
-- REM.1.0 过程名:ITEM_APPLY
-- REM.1.1 描述:指标申请
-------------------------------------------------
PROCEDURE ITEM_APPLY_PROC(
     I_ORG_CODE       IN  VARCHAR2,
     I_PERSON_CODE    IN  VARCHAR2,
     I_DEPT_CODE      IN  VARCHAR2,
     I_UP_DEPT_CODE   IN  VARCHAR2,
     I_ITEM_STATE     IN  VARCHAR2,
     I_APPLY_REASON   IN  VARCHAR2,  --表单信息
     I_ITEM_NAME      IN  VARCHAR2,  --指标信息
     I_BASE_TYPE      IN  VARCHAR2,  
     I_ITEM_UNIT      IN  VARCHAR2,     
     I_ITEM_EXPLAIN   IN  VARCHAR2,
     I_ITEM_COM_FLAG  IN  VARCHAR2,
     I_ITEM_TYPE      IN  VARCHAR2,
     I_IS_ALL         IN  VARCHAR2,
     O_APPLY_ID       OUT VARCHAR2,
     O_RETURN         OUT VARCHAR2,
     O_MSG            OUT VARCHAR2
)
AS
     G_APPLY_ID      VARCHAR2(20);
     G_APPLY_NAME    VARCHAR2(50);
     G_ORG_CODE      VARCHAR2(8);
     G_PERSON_CODE   VARCHAR2(8);
     G_DEPT_CODE     VARCHAR2(20);
     G_UP_DEPT_CODE  VARCHAR2(20);
     G_ITEM_STATE    VARCHAR2(2);
     G_APPLY_REASON  VARCHAR2(200);
     ----------------
     G_DETAIL_ID     VARCHAR2(20);
     G_ITEM_NAME     VARCHAR2(80);
     G_BASE_TYPE     VARCHAR2(2);
     G_ITEM_UNIT     VARCHAR2(20);
     G_ITEM_EXPLAIN  VARCHAR2(200);
     G_ITEM_COM_FLAG VARCHAR2(2);
     G_ITEM_TYPE     VARCHAR2(2);
     G_IS_ALL        VARCHAR2(1);
 
BEGIN
     G_ORG_CODE := I_ORG_CODE;
     G_PERSON_CODE := I_PERSON_CODE;
     G_DEPT_CODE := I_DEPT_CODE;
     G_UP_DEPT_CODE := I_UP_DEPT_CODE;
     G_ITEM_STATE := I_ITEM_STATE;
     G_APPLY_REASON := I_APPLY_REASON;
     G_ITEM_NAME := I_ITEM_NAME;
     G_BASE_TYPE := I_BASE_TYPE;
     G_ITEM_UNIT := I_ITEM_UNIT;
     G_ITEM_EXPLAIN := I_ITEM_EXPLAIN;
     G_ITEM_COM_FLAG := I_ITEM_COM_FLAG;
     G_ITEM_TYPE := I_ITEM_TYPE;
     G_IS_ALL := I_IS_ALL;
     
     G_APPLY_NAME := I_ITEM_NAME||G_ORG_CODE||'申请表';
     
     --1.取得 APPLY_ID
     SELECT SEQ_APPLY_ID.NEXTVAL INTO G_APPLY_ID FROM DUAL;
     --2.取得 APPLY_DETAIL_ID
     SELECT SEQ_APPLY_DETAIL_ID.NEXTVAL INTO G_DETAIL_ID FROM DUAL;
     
     --1.插入 PV_ITEM_APPLY
     INSERT INTO PV_ITEM_APPLY(
            APPLY_ID,APPLY_NAME,PERSON_CODE,DEPT_CODE,ORG_CODE,UP_DEPT_CODE,
            ITEM_STATE,APPLY_DATE,APPLY_REASON,AUDIT_STATE
     )
     VALUES(
            G_APPLY_ID,G_APPLY_NAME,G_PERSON_CODE,G_DEPT_CODE,G_ORG_CODE,
            G_UP_DEPT_CODE,G_ITEM_STATE,SYSDATE,G_APPLY_REASON,'0'
     );
     --2.插入 PV_ITEM_APPLY_DETAIL
     INSERT INTO PV_ITEM_APPLY_DETAIL(
            APPLY_ID,DETAIL_ID,ITEM_NAME,BASE_TYPE,ITEM_UNIT,
            ITEM_EXPLAIN,ITEM_COM_FLAG,ITEM_TYPE,IS_ALL
     )
     VALUES(
            G_APPLY_ID,G_DETAIL_ID,G_ITEM_NAME,G_BASE_TYPE,G_ITEM_UNIT,
            G_ITEM_EXPLAIN,G_ITEM_COM_FLAG,G_ITEM_TYPE,G_IS_ALL
     );
     COMMIT;
     O_RETURN := '1';
     O_APPLY_ID := G_APPLY_ID;
     O_MSG    := '指标申请保存成功!';
     EXCEPTION WHEN OTHERS THEN
     O_RETURN := '-1';
     O_MSG    := '程序异常,指标申请保存失败,请联系信息管理员!';
     ROLLBACK;
     
END ITEM_APPLY_PROC;

-------------------------------------------------
-- REM.1.0 过程名:ITEM_AUDIT
-- REM.1.1 描述:指标申请
-------------------------------------------------
PROCEDURE ITEM_AUDIT_PROC(
     I_APPLY_ID       IN  VARCHAR2,
     I_ORG_CODE       IN  VARCHAR2,
     I_PERSON_CODE    IN  VARCHAR2,
     I_DEPT_CODE      IN  VARCHAR2,  --表单信息
     I_AUDIT_STATE    IN  VARCHAR2,  --审核信息
     I_REMARK         IN  VARCHAR2,
     O_RETURN         OUT VARCHAR2,
     O_MSG            OUT VARCHAR2
)
AS
     G_APPLY_ID      VARCHAR2(20);
     G_ORG_CODE      VARCHAR2(8);
     G_PERSON_CODE   VARCHAR2(8);
     G_DEPT_CODE     VARCHAR2(20);
     G_AUDIT_STATE   VARCHAR2(2);
     G_REMARK        VARCHAR2(200);
     G_ITEM_CODE     VARCHAR2(20);
     G_AP_ORG_CODE   VARCHAR2(20);
     G_AP_DEPT_CODE  VARCHAR2(20); 
     G_AU_ORG_CODE   VARCHAR2(20);
     G_AU_DEPT_CODE  VARCHAR2(20);   
     G_REMARK_ID     VARCHAR2(20);
     DETAIL_CUR      DATA_CUR;
     G_ITEM_NAME     VARCHAR2(50);
     G_BASE_TYPE     VARCHAR2(2);
     G_ITEM_UNIT     VARCHAR2(20);
     G_ITEM_EXPLAIN  VARCHAR2(200);
     G_ITEM_COM_FLAG VARCHAR2(2);
     G_ITEM_TYPE     VARCHAR2(2);
     G_IS_ALL        VARCHAR2(1);
BEGIN
     G_APPLY_ID := I_APPLY_ID;
     G_ORG_CODE := I_ORG_CODE;
     G_PERSON_CODE := I_PERSON_CODE;
     G_DEPT_CODE := I_DEPT_CODE;
     G_AUDIT_STATE := I_AUDIT_STATE;
     G_REMARK := I_REMARK;
     
     --1.审批信息
     UPDATE PV_ITEM_APPLY 
     SET AUDIT_PERSON_CODE=G_PERSON_CODE,AUDIT_ORG_CODE=G_ORG_CODE,AUDIT_DEPT_CODE=G_DEPT_CODE,
         AUDIT_STATE=G_AUDIT_STATE,AUDIT_DATE=SYSDATE,REMARK=G_REMARK,EXECUTION_ID=''
     WHERE APPLY_ID=G_APPLY_ID;
     
     --2.取得申请人及审核人信息
     SELECT ORG_CODE,DEPT_CODE,AUDIT_ORG_CODE,AUDIT_DEPT_CODE INTO G_AP_ORG_CODE,G_AP_DEPT_CODE,G_AU_ORG_CODE,G_AU_DEPT_CODE 
     FROM PV_ITEM_APPLY WHERE APPLY_ID=G_APPLY_ID;
     
     --3.审批通过,建立新指标
     IF G_AUDIT_STATE=1 THEN      
         OPEN DETAIL_CUR FOR
              SELECT ITEM_NAME,BASE_TYPE,ITEM_UNIT,ITEM_EXPLAIN,ITEM_COM_FLAG,ITEM_TYPE,IS_ALL
              FROM PV_ITEM_APPLY_DETAIL WHERE APPLY_ID=G_APPLY_ID;
         LOOP
              FETCH DETAIL_CUR INTO G_ITEM_NAME,G_BASE_TYPE,G_ITEM_UNIT,G_ITEM_EXPLAIN,G_ITEM_COM_FLAG,G_ITEM_TYPE,G_IS_ALL;
         EXIT WHEN DETAIL_CUR%NOTFOUND;
             --1.审批通过,生成新指标,加入指标中心 (PV_ITEM)
             SELECT SEQ_ITEM_CODE.NEXTVAL INTO G_ITEM_CODE FROM DUAL;
             
             INSERT INTO PV_ITEM(
                 ITEM_CODE,ITEM_NAME,ITEM_EXPLAIN,ITEM_TYPE,ITEM_UNIT,COMPUTE_FLAG,
                 USE_FLAG,BASE_TYPE,IS_ALL,CREATE_CODE,ORG_CODE,DEPT_CODE,CREATE_DATE
             )
             VALUES(
                 G_ITEM_CODE,G_ITEM_NAME,G_ITEM_EXPLAIN,G_ITEM_TYPE,G_ITEM_UNIT,G_ITEM_COM_FLAG,
                 '1',G_BASE_TYPE,G_IS_ALL,G_PERSON_CODE,G_ORG_CODE,G_DEPT_CODE,SYSDATE
             );
             
             --2.申请人和定义的上级单位部门均为指标拥有者
             INSERT INTO PV_ITEM_OWNER(
                 OWNER_ID,ITEM_CODE,DEPT_CODE,ORG_CODE,OPERATE_DATE
             )
             VALUES(
                 SEQ_ITEM_OWNER_ID.NEXTVAL,G_ITEM_CODE,G_AP_DEPT_CODE,G_AP_ORG_CODE,SYSDATE
             );
             INSERT INTO PV_ITEM_OWNER(
                 OWNER_ID,ITEM_CODE,DEPT_CODE,ORG_CODE,OPERATE_DATE
             )
             VALUES(
                 SEQ_ITEM_OWNER_ID.NEXTVAL,G_ITEM_CODE,G_AU_DEPT_CODE,G_AU_ORG_CODE,SYSDATE
             );
         END LOOP;
         
         --3.审批通过,备案 PV_ITEM_REMARK
         SELECT SEQ_REMARK_ID.NEXTVAL INTO G_REMARK_ID FROM DUAL;
         INSERT INTO PV_ITEM_REMARK(REMARK_ID,APPLY_ID,REMARK_DATE) 
         VALUES(G_REMARK_ID,G_APPLY_ID,SYSDATE);
         
     END IF;
     --4.申请指标信息
     UPDATE PV_ITEM_APPLY_DETAIL SET ITEM_CODE=G_ITEM_CODE
     WHERE APPLY_ID=G_APPLY_ID;
     
     COMMIT;
     O_RETURN := '1';
     O_MSG    := '指标审核保存成功!';
     EXCEPTION WHEN OTHERS THEN
     ROLLBACK;
     O_RETURN := '-1';
     O_MSG    := '程序异常,指标审核保存失败,请联系信息管理员!';
     
END ITEM_AUDIT_PROC;

END PV_ITEM_PKG;
分享到:
评论

相关推荐

    MySQL数据库:存储过程的创建1.pptx

    routine_body:存储过程的主体部分,也叫做存储过程体。里面包含了在过程调用的时候必须执行的语句,这个部分总是以BEGIN开始,以END结束。当然,当存储过程体中只有一个SQL语句时可以省略BEGIN-END标志。 创建存储...

    css浏览器兼容写法

    css浏览器兼容写法 如果只让ie6看见用*html .head{color:#000;} 如果只让ie7看见用*+html .head{color:#000;} 如果只让ff看见用:root body .head{color:#000;} 如果只让ff、IE8看见用html>/**/body .head{color:#000...

    SQL导出MySQL单个存储过程.txt

    SQL语句对单个的MySQL存储过程导出 首先确保参数secure-file-priv='' 表示不限制mysqld在任意目录的导入导出 打开my.cnf或my.ini,加入如下语句后重启mysql服务。 secure_file_priv='' sql语法只修改下面的...

    浅析@ReponseBody和@RequestBody注解

    浅析@ReponseBody和@RequestBody注解主要讲述了@ReponseBody的作用和@RequestBody的作用和springMvc内部是如何对他们进行解析的

    C#中调用ORACLE的PACKAGE里方法和存储过程的应用

    1、首先在ORACLE里建立如下PACKAGE PACKAGE分SPEC和body两部分 2、C#部分代码

    初识PostgreSQL存储过程

    什么是存储过程, 百度百科是这么定义的:存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的...

    BODY

    BODY

    spring 支持@RequestBody注解依赖包

    spring 支持@RequestBody注解依赖包 、 spring 支持@RequestBody注解依赖包 spring 支持@RequestBody注解依赖包

    DrivePro Body Toolbox_Win_v2.4.0.0【创见影像监控设备管理工具】

    — 此外,用户可以调整Toolbox和DrivePro Body设备的设置,格式化内部存储设备,并通过Toolbox升级Body摄像头的固件。 — 文件备份:一旦与DrivePro Body监控设备连接,自动备份照片和录像。 — 设备设置:调整...

    openpose_body25

    CMU在BODY25数据集上训练的模型,包含25个关键点,使用代码与COCO有所不同 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    navicat中创建存储过程、触发器和使用游标的简单实例(图文)

    写一个存储过程,往users表中插入数据,创建过程如下: 代码如下 BEGIN #Routine body goes here... declare n bigint; set n = 201121029684; while n <= 201121029694 do insert into users(student_...

    php获取body内容

    body> ,之后字符有效 。 $content = file_get_contents("$filename"); $i = strpos("$content","<body"); $j = $i +1 ; $k = strpos("$content",">",$j); //找到</body>,之前字符有效。 $m ...

    .net 一般处理程序获取Http推送的包体Body

    实现了别的服务器通过Http协议接口推送到自己的服务器包体(body)接收代码的实现过程,我这里是用的.net的一般处理程序做的Http接口,调用时候无需定义参数,发布后访问文件全路径就可以获取对方传过来的包体全部...

    2D Soft Body 2.0.unitypackage

    2D Soft Body 2.0.unitypackage

    ASP.NET Core自定义中间件如何读取Request.Body与Response.Body的内容详解

    主要给大家介绍了关于在ASP.NET Core自定义中间件中如何读取Request.Body与Response.Body的内容,文中通过示例代码介绍的非常详细,对大家学习或者使用ASP.NET Core具有一定的参考学习价值,需要的朋友们下面来一起...

    php找到body标签

    //(情况2)也可能是根本没有body标签 //对情况1),先跳过空格换行等,看后面的字符是不是body,如果是,此次查询就是对的。 // 如果不是,就重新查询,且定义初始查询位置为上次查询+1,直到有结果。 //对情况2 ...

    Introduction in many body physics

    troduction in many body physics

    @RequestBody与@Validated使用时校验失效.md

    @RequestBody与@Validated使用时校验失效.md

    Rigid Body Dynamics Algorithms

    Rigid Body Dynamics Algorithms

    Body Sensor Networks

    Body Sensor Networks 电子书

Global site tag (gtag.js) - Google Analytics