SQL PKG示例

CREATE OR REPLACE PACKAGE PKG_SYS_LOG IS
-- Author : Li Cong
-- Created : 2009-10-12
-- Purpose : 存放系统级别的日志信息,如,过程报错。

---系统报错日志记录
PROCEDURE ERROR_LOG(P_PACKAGE_NAME VARCHAR2,
P_PROC_NAME VARCHAR2,
P_EXCEP_DT DATE,
P_EXCEP_CODE VARCHAR2,
P_EXCEP_DESC VARCHAR2,
P_EXCEP_REMK VARCHAR2,
P_LINE_NO NUMBER);

---系统执行日志
PROCEDURE EXECUTE_LOG(P_PACKAGE_NAME VARCHAR2,
P_PROC_NAME VARCHAR2,
P_EXEC_START_TM DATE,
P_EXEC_END_TM DATE,
P_EXEC_PEND_TM NUMBER,
P_EXEC_REF_DATA_ROWS NUMBER,
P_EXEC_REMK VARCHAR2);
END PKG_SYS_LOG;

 

CREATE OR REPLACE PACKAGE BODY PKG_SYS_LOG IS

--*************************************************************
-- AUTHOR : KELIVEN LIU
-- CREATED : 2008-05-20
-- PURPOSE : 记录系统中存储过程运行日志

-- PARAMETER:
-- P_PACKAGE_NAME VARCHAR2 包名
-- P_PROC_NAME VARCHAR2, 过程名
-- P_EXCEP_DT DATE, 执行日期
-- P_EXCEP_CODE VARCHAR2, 异常代码
-- P_EXCEP_DESC VARCHAR2, 异常描述信息
-- P_EXCEP_REMK VARCHAR2, 备注,可能的值为'BEGIN','END','ERROR'
-- P_LINE_NO NUMBER 行号

-- MODIFY HISTORY
-- PERSON DATE COMMENTS
-- -------------------------------------------------------------
--*************************************************************

--*************************************************************
-- AUTHOR : KELIVEN LIU
-- CREATED : 2008-05-20
-- PURPOSE : 记录系统中存储过程运行日志

-- PARAMETER:
-- NAME TYPE DESC
-- P_SEQ_NO NUMBER 发生异常存储过程中主要sequence的当前值
-- P_PROC_NAME VARCHAR2 存储过程名
-- P_EXCEP_DT DATE 时间,包括开始时间,结束时间,异常发生时间
-- P_EXCEP_CODE VARCHAR2 异常代码
-- P_EXCEP_DESC VARCHAR2 异常描述信息
-- P_EXCEP_REMK VARCHAR2 备注,可能的值为'BEGIN','END','ERROR'
-- P_LINE_NO NUMBER 行号

-- P_PACKAGE_NAME VARCHAR2, 包名
-- P_PROC_NAME VARCHAR2, 过程名
-- P_EXEC_START_TM DATE, 执行开始时间
-- P_EXEC_END_TM DATE, 执行结束时间
-- P_EXEC_PEND_TM NUMBER, 执行花费时间
-- P_EXEC_REF_DATA_ROWS NUMBER, 涉及数据量
-- P_EXEC_REMK VARCHAR2 备注,可能的值为'BEGIN','END','ERROR'

-- MODIFY HISTORY
-- PERSON DATE COMMENTS
-- -------------------------------------------------------------
--*************************************************************
PROCEDURE ERROR_LOG(P_PACKAGE_NAME VARCHAR2,
P_PROC_NAME VARCHAR2,
P_EXCEP_DT DATE,
P_EXCEP_CODE VARCHAR2,
P_EXCEP_DESC VARCHAR2,
P_EXCEP_REMK VARCHAR2,
P_LINE_NO NUMBER) AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
INSERT INTO TC_EXCEPTION_LOG
(LOG_ID,
PACKAGE_NAME,
PROC_NAME,
EXCEPTION_TM,
EXCEPTION_CODE,
EXCEPTION_DESC,
EXCEPTION_REMK,
LINE_NO)
VALUES
(SEQ_LOG.NEXTVAL,
SUBSTR(P_PACKAGE_NAME, 1, 120),
SUBSTR(P_PROC_NAME, 1, 120),
P_EXCEP_DT,
SUBSTR(P_EXCEP_CODE, 1, 200),
SUBSTR(P_EXCEP_DESC, 1, 1000),
SUBSTR(P_EXCEP_REMK, 1, 600),
P_LINE_NO);

COMMIT;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('STP_RUNNING_LOG' || SQLCODE || ':' || SQLERRM);
ROLLBACK;
END ERROR_LOG;

---系统执行日志
PROCEDURE EXECUTE_LOG(P_PACKAGE_NAME VARCHAR2,
P_PROC_NAME VARCHAR2,
P_EXEC_START_TM DATE,
P_EXEC_END_TM DATE,
P_EXEC_PEND_TM NUMBER,
P_EXEC_REF_DATA_ROWS NUMBER,
P_EXEC_REMK VARCHAR2) AS
PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN

INSERT INTO TC_EXECUTE_LOG
(LOG_ID,
PACKAGE_NAME,
PROC_NAME,
STRAT_TM,
END_TM,
SPEND_TM,
REF_DATA_ROWS,
REMK)
VALUES
(SEQ_LOG.NEXTVAL,
SUBSTR(P_PACKAGE_NAME, 1, 120),
SUBSTR(P_PROC_NAME, 1, 120),
P_EXEC_START_TM,
P_EXEC_END_TM,
P_EXEC_PEND_TM,
P_EXEC_REF_DATA_ROWS,
SUBSTR(P_EXEC_REMK, 1, 1000));
COMMIT;

EXCEPTION
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('TC_EXECUTE_LOG' || SQLCODE || ':' || SQLERRM);
ROLLBACK;
END EXECUTE_LOG;

END PKG_SYS_LOG;

转载于:https://www.cnblogs.com/heyanan/p/7162297.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值