日志:用来记录错误(用来回溯问题),记录程序运行的情况(对程序进行修改和优化,提高性能)
1、首先得创建一个日志表,来记录日志
2、创建存储过程,来往日志表中插入日志信息(数据)
3、在其他的存储过程(同步数据的存储过程)执行的时候,调用2里面的存储过程来记录具体的信息
---需要知道的是:
1、首先,每个项目组都有一张记录日志信息的表(日志表),我们基本上不用去创建这张表
2、一般插日志信息的存储过程也会有滴
3、我们只需要在写我们自己的sp的时候,调用一下这个插日志的存储过程(给一些参数)往这个日志表中插相关记录
------第一步:建日志表(建表)
CREATE TABLE LOG_TAB ( LOG_ID VARCHAR2(32), ---一般用作主键。一般是用SYS_GUID()来生成一串32位长度的字符
SP_NAME VARCHAR2(40), ---我们自己写同步数据的存储过程的名字
SP_STATUS VARCHAR2(10),---存储过程的状态。一般就两种状态:RUNNING、FINISHED
S_DATE DATE, ---开始时间
F_DATE DATE, ---完成时间
SP_DESC VARCHAR2(50)); ---描述
----给表里的列添加注释信息(在项目建表的时候需要加上这些注释信息)
COMMENT ON COLUMN LOG_TAB.LOG_ID IS '日志ID';
COMMENT ON COLUMN LOG_TAB.SP_NAME IS '存储过程名';
COMMENT ON COLUMN LOG_TAB.SP_STATUS IS '状态';
COMMENT ON COLUMN LOG_TAB.S_DATE IS '开始时间';
COMMENT ON COLUMN LOG_TAB.F_DATE IS '完成时间';
COMMENT ON COLUMN LOG_TAB.SP_DESC IS '描述';
---SYS_GUID():随机生成一个32位字符长度的字符串
SELECT SYS_GUID() FROM DUAL;
---存储过程名一般不超过40个字符长度
--------第二步:创建sp(往这个日志表中插日志信息的sp)
CREATE OR REPLACE PROCEDURE SP_LOG_TAB(P_SP_NAME VARCHAR2,
P_SP_STATUS VARCHAR2,
P_S_DATE DATE,
P_F_DATE DATE,
P_SP_DESC VARCHAR2)
IS
BEGIN
INSERT INTO LOG_TAB(LOG_ID,
SP_NAME,
SP_STATUS,
S_DATE,
F_DATE,
SP_DESC)
VALUES(SYS_GUID(),
P_SP_NAME,
P_SP_STATUS,
P_S_DATE,
P_F_DATE,
P_SP_DESC);
COMMIT;
END;
---测试一下:
--调用一下插日志的sp,往日志表中插入一条数据
DECLARE
P_SP_NAME VARCHAR2(40) := 'SP_EMP_TAG_CURSOR';
P_SP_STATUS VARCHAR2(10) := 'RUNNING';
P_S_DATE DATE := SYSDATE;
P_F_DATE DATE;
P_SP_DESC VARCHAR2(50) := '程序开始执行';
BEGIN
SP_LOG_TAB(P_SP_NAME, P_SP_STATUS, P_S_DATE, P_F_DATE, P_SP_DESC);
END;
SELECT * FROM LOG_TAB FOR ;
---在同步数据的sp跑完后,再调一遍插日志的存储过程,记录结束时间
DECLARE
P_SP_NAME VARCHAR2(40) := 'SP_EMP_TAG_CURSOR';
P_SP_STATUS VARCHAR2(10) := 'FINISHED';
P_S_DATE DATE := TO_DATE('2020/09/26 14:38:38','YYYY/MM/DD HH24:MI:SS');
P_F_DATE DATE := SYSDATE; --- 5分钟后的当前时间
P_SP_DESC VARCHAR2(50) := '同步数据完成';
BEGIN
SP_LOG_TAB(P_SP_NAME, P_SP_STATUS, P_S_DATE, P_F_DATE, P_SP_DESC);
END;