创建日志表和插日志信息的sp

日志:用来记录错误(用来回溯问题),记录程序运行的情况(对程序进行修改和优化,提高性能)

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;


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值