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;