`
Sehoney
  • 浏览: 41098 次
  • 性别: 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;
分享到:
评论

相关推荐

    oracle存储过程写法

    根据提供的Oracle存储过程示例,我们可以详细解析其中的关键知识点,包括存储过程的创建、游标的使用、临时表的创建及数据处理等。 ### 存储过程的创建与使用 存储过程是在数据库中编写的SQL代码块,它可以接受...

    MYSQL的存储过程和函数简单写法

    - `routine_body` 是存储过程的主体,包含SQL语句。 例如: ```sql DELIMITER // CREATE PROCEDURE myproc(OUT s INT) BEGIN SELECT COUNT(*) INTO s FROM students; END // DELIMITER ; ``` 在这个例子中,`...

    oracle存储过程学习经典[语法+实例+调用]

    ### Oracle存储过程学习经典知识点详解 #### 一、Oracle存储过程概述 **Oracle存储过程**是一种可以在Oracle数据库中存储并可被多次调用的程序单元。它可以包含一系列SQL语句和控制流语句,用于执行复杂的操作。...

    asp生成html 函数的写法经典

    strTemplate = Replace(strTemplate, "$body$", Request.Form("Body")) strTemplate = Replace(strTemplate, "$foot$", Request.Form("foot")) ' 写入HTML文件 Set TextFile = FileObject.CreateTextFile...

    六种常见的HTML5写法误用.pdf

    正确的做法是,如果需要一个样式容器,可以直接对<body>应用样式,或者在必要时使用。 2. **正确使用和**: - 元素是用来包含页眉信息,比如标题、导航链接等,它可以出现在文档的任何section中。但要注意,如果...

    相对路径和绝对路径的写法总结

    它用于指明文件或文件夹在存储设备上的位置。路径分为相对路径和绝对路径两种。绝对路径是文件系统中的一个绝对位置,从根目录开始的完整路径,而相对路径是相对于当前文件位置的一个路径。 首先,让我们看看在编程...

    谈谈JavaScript中浏览器兼容问题的写法小议

    在不同的浏览器中,这个值可能存储在`document.documentElement.scrollTop`或`document.body.scrollTop`中。为了解决这个问题,我们可以使用或运算符获取滚动距离: ```javascript window.onscroll = function() { ...

    C++ 中的Lambda表达式写法

    因此,Lambda表达式可以赋值给`std::function`或其他接受函数对象的容器,以便于存储和传递。 ### 四、Lambda表达式与传统函数的区别 1. **定义位置**:Lambda表达式可以定义在任何表达式中,而传统函数必须定义在...

    2021-2022计算机二级等级考试试题及答案No.11174.docx

    6. CSS语法:正确写法是将属性和值用花括号包围,如`body{color:black;}`。 7. Word打印设置:在Word中,打印对话框允许设定打印特定页码范围。 8. MySQL调用存储过程和函数:使用CALL语句调用存储过程,使用...

    js代码-对象最简便的json写法

    body: jsonData }) .then(response => response.json()) .then(data => console.log('Success:', data)) .catch((error) => console.log('Error:', error)); ``` 4. `README.txt`文件的作用: `README.txt`...

    从HTML到XML

    <xsl:apply-templates select="html/body/*"/> <!-- 其他元素的转换规则... --> ``` 四、XML的应用与优势 1. 数据交换:XML提供了一种统一的数据格式,使得不同系统间的数据交换变得简单。 ...

    2021-2022计算机二级等级考试试题及答案No.1736.docx

    存储过程与存储函数之间的主要区别之一是存储过程可以拥有输出参数(选项D)。存储过程通常用于执行复杂的业务逻辑,而存储函数主要用于返回计算结果。 ### 16. Word中的格式设置 在Microsoft Word中,用户可以使用...

    显示日期和星期(HTML经典用例)

    JavaScript代码部分首先定义了变量`enabled`(在这个案例中未使用)、`today`(获取当前日期对象)、`day`(存储星期几的字符串)和`date`(存储完整日期的字符串)。接着,通过`today.getDay()`方法获取当前日期是...

    2021-2022计算机二级等级考试试题及答案No.18421.docx

    - 存储过程参数的输入输出类型包括IN、OUT和INOUT。 ### Excel单元格地址 6. **Excel单元格地址表示法**: - Excel中每个单元格都有唯一的编号,即地址,通常采用列标加行号的方式表示,例如A1表示第1列第1行的...

    2021-2022计算机二级等级考试试题及答案No.14460.docx

    例如,设置元素的背景颜色,正确的写法是`body { color: black; }`。这里的`body`是指定的HTML元素,`color: black;`是应用的样式属性及其值。 ### 26. 多态性概念 多态性是面向对象编程中的一个重要特性,它允许...

    2021-2022计算机二级等级考试试题及答案No.5082.docx

    例如,要为`<body>`标签设置颜色为黑色,正确的写法是`body { color: black; }`。 3. **解析**:选项A“body { color: black; }”是正确的。这种格式符合CSS的标准语法。 ### 数据库系统基本概念 1. **题目背景**...

    2022年自学考试ASP选择题含参考答案.doc

    2. 设置网页背景图像:在HTML中,可以使用<body>标签的`background`属性来设置网页的背景图像,正确的写法是`<body background="bg.jpg">`。 3. VBScript函数:VBScript是ASP中常用的脚本语言之一。`IsArray`函数...

    jquery mobile开发常见问题分析

    在jQuery Mobile开发过程中,开发者可能会遇到需要页面滚动到特定位置的情况。在使用animate方法进行滚动时,如果没有正确指定滚动的目标位置,可能会导致滚动效果不符合预期。为了解决这个问题,需要在滚动的目标...

    j2ee 大学java课程复习题

    `CallableStatement`接口提供了调用存储过程的能力,因此正确答案是C.CallableStatemet。 7. **表示数据库连接的对象** 在JDBC中,`Connection`对象代表了与数据库的连接,因此正确答案是B.Connection。 8. **...

Global site tag (gtag.js) - Google Analytics