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存储过程示例,我们可以详细解析其中的关键知识点,包括存储过程的创建、游标的使用、临时表的创建及数据处理等。 ### 存储过程的创建与使用 存储过程是在数据库中编写的SQL代码块,它可以接受...
- `routine_body` 是存储过程的主体,包含SQL语句。 例如: ```sql DELIMITER // CREATE PROCEDURE myproc(OUT s INT) BEGIN SELECT COUNT(*) INTO s FROM students; END // DELIMITER ; ``` 在这个例子中,`...
### Oracle存储过程学习经典知识点详解 #### 一、Oracle存储过程概述 **Oracle存储过程**是一种可以在Oracle数据库中存储并可被多次调用的程序单元。它可以包含一系列SQL语句和控制流语句,用于执行复杂的操作。...
strTemplate = Replace(strTemplate, "$body$", Request.Form("Body")) strTemplate = Replace(strTemplate, "$foot$", Request.Form("foot")) ' 写入HTML文件 Set TextFile = FileObject.CreateTextFile...
正确的做法是,如果需要一个样式容器,可以直接对<body>应用样式,或者在必要时使用。 2. **正确使用和**: - 元素是用来包含页眉信息,比如标题、导航链接等,它可以出现在文档的任何section中。但要注意,如果...
它用于指明文件或文件夹在存储设备上的位置。路径分为相对路径和绝对路径两种。绝对路径是文件系统中的一个绝对位置,从根目录开始的完整路径,而相对路径是相对于当前文件位置的一个路径。 首先,让我们看看在编程...
在不同的浏览器中,这个值可能存储在`document.documentElement.scrollTop`或`document.body.scrollTop`中。为了解决这个问题,我们可以使用或运算符获取滚动距离: ```javascript window.onscroll = function() { ...
因此,Lambda表达式可以赋值给`std::function`或其他接受函数对象的容器,以便于存储和传递。 ### 四、Lambda表达式与传统函数的区别 1. **定义位置**:Lambda表达式可以定义在任何表达式中,而传统函数必须定义在...
6. CSS语法:正确写法是将属性和值用花括号包围,如`body{color:black;}`。 7. Word打印设置:在Word中,打印对话框允许设定打印特定页码范围。 8. MySQL调用存储过程和函数:使用CALL语句调用存储过程,使用...
body: jsonData }) .then(response => response.json()) .then(data => console.log('Success:', data)) .catch((error) => console.log('Error:', error)); ``` 4. `README.txt`文件的作用: `README.txt`...
<xsl:apply-templates select="html/body/*"/> <!-- 其他元素的转换规则... --> ``` 四、XML的应用与优势 1. 数据交换:XML提供了一种统一的数据格式,使得不同系统间的数据交换变得简单。 ...
存储过程与存储函数之间的主要区别之一是存储过程可以拥有输出参数(选项D)。存储过程通常用于执行复杂的业务逻辑,而存储函数主要用于返回计算结果。 ### 16. Word中的格式设置 在Microsoft Word中,用户可以使用...
JavaScript代码部分首先定义了变量`enabled`(在这个案例中未使用)、`today`(获取当前日期对象)、`day`(存储星期几的字符串)和`date`(存储完整日期的字符串)。接着,通过`today.getDay()`方法获取当前日期是...
- 存储过程参数的输入输出类型包括IN、OUT和INOUT。 ### Excel单元格地址 6. **Excel单元格地址表示法**: - Excel中每个单元格都有唯一的编号,即地址,通常采用列标加行号的方式表示,例如A1表示第1列第1行的...
例如,设置元素的背景颜色,正确的写法是`body { color: black; }`。这里的`body`是指定的HTML元素,`color: black;`是应用的样式属性及其值。 ### 26. 多态性概念 多态性是面向对象编程中的一个重要特性,它允许...
例如,要为`<body>`标签设置颜色为黑色,正确的写法是`body { color: black; }`。 3. **解析**:选项A“body { color: black; }”是正确的。这种格式符合CSS的标准语法。 ### 数据库系统基本概念 1. **题目背景**...
2. 设置网页背景图像:在HTML中,可以使用<body>标签的`background`属性来设置网页的背景图像,正确的写法是`<body background="bg.jpg">`。 3. VBScript函数:VBScript是ASP中常用的脚本语言之一。`IsArray`函数...
在jQuery Mobile开发过程中,开发者可能会遇到需要页面滚动到特定位置的情况。在使用animate方法进行滚动时,如果没有正确指定滚动的目标位置,可能会导致滚动效果不符合预期。为了解决这个问题,需要在滚动的目标...
`CallableStatement`接口提供了调用存储过程的能力,因此正确答案是C.CallableStatemet。 7. **表示数据库连接的对象** 在JDBC中,`Connection`对象代表了与数据库的连接,因此正确答案是B.Connection。 8. **...