SQL日志表的使用

------------------------日志-----------------------
--日志是一张表,在这张表里面记录了存储过程的运行记录。(每执行一次存储过程,都会在日志表里面留下记录)

--第一步:在用户下创建一张日志表。

CREATE TABLE LOG_RECORD(
LOG_ID NUMBER,  --就是一个行号(序列号)
SP_NAME  VARCHAR2(100),
STEP_ID NUMBER,  --步骤编号(1,2,3,4)
FINISH_TIME DATE,  --步骤完成时间
REMARK VARCHAR2(100)   --步骤名称
);

--分析:把向日志表中插入数据的语句先封装成一个存储过程,然后把这个存储过程嵌套在其他存储过程里面,就能够实现
--自动向日志表插入数据。

--序列
--语法:

CREATE SEQUENCE S_序列名;

--第二步:创建一个序列名为S_TEST(这一步是为了实现每行数据都有一个不重复的行号)

CREATE SEQUENCE S_TEST; --此时的序列是一个空序列。意思就是里面没有序列号。

--序列的使用

SELECT S_TEST.NEXTVAL FROM DUAL;  --空序列的下一个值一定是1.
SELECT S_TEST.CURRVAL FROM DUAL;  --查看当前序列值是多少
SELECT * FROM USER_SEQUENCES;     --查看当前所有的序列
DROP SEQUENCE S_TEST;            --删除序列

--第三步:将向日志表中插入数据的过程封装为一个存储过程

CREATE OR REPLACE PROCEDURE SP_LOG(P_SP_NAME VARCHAR2,P_STEP_ID NUMBER,P_REMARK VARCHAR2) AS
BEGIN
  INSERT INTO log_record
  (log_id, sp_name, step_id, finish_time, remark)
VALUES
  (S_TEST.NEXTVAL,P_SP_NAME,P_STEP_ID,SYSDATE,P_REMARK);
  COMMIT;
END;

--第四步:将日志表存储过程的调用嵌套到其他存储过程中

CREATE OR REPLACE PROCEDURE SP_DW_STORE AS
BEGIN
  SP_LOG('SP_DW_STORE',1,'程序开始');
--
DELETE FROM DW_STORE;
  SP_LOG('SP_DW_STORE',2,'删除数据完成');
--
--将最新的数据更新到表中。
   (更新数据过程)
      SP_LOG('SP_DW_STORE',3,'插入数据完成');
COMMIT;
  SP_LOG('SP_DW_STORE',4,'程序完成');
END;

 

posted @ 2022-05-07 14:07  潜摩羯  阅读(503)  评论(0编辑  收藏  举报