网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

ORACLEPL/SQL利用自治事务实现日志记录

程序中通常都要实现日志记录功能,尤其是事务发生报错时的错误日志。如果把日志记录在数据库中,可以方便后续的查询和分析。但是如果直接把记录日志的共能写在事务中,如果事务发生ROLLBACK,记录的日志也会发生ROLLBACK,明显时不合适的。但是使用自治事务可以很方便的实现日志记录功能,并且不会受主事务的影响。下面实现一个简单的日志记录例子。

1. 创建日志记录表

点击(此处)折叠或打开

目前创新互联已为1000多家的企业提供了网站建设、域名、雅安服务器托管、网站托管、服务器租用、企业网站设计、安泽网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。

  1. create table logtab (
  2.   code integer,
  3.   text varchar2(4000),
  4.   created_on date,
  5.   created_by varchar2(50),
  6.   changed_on date,
  7.   changed_by varchar2(50)
  8.   );
2. 创建记录日志的package

创建日志包可以方便统一管理日志记录,并且可以实现自治事务。
log package 包含两个procedure:putline和saveline,putline实现日志插入,saveline时一个自治事务,调用putline。在程序中记录日志时可以直接调用saveline实现。

点击(此处)折叠或打开

  1. create or replace package log
  2. is
  3.   procedure putline(code_in in integer, text_in in varchar2);
  4.   procedure saveline(code_in in integer, text_in in varchar2);
  5. end log;
  6. /

  7. create or replace package body log
  8. is
  9.   procedure putline(
  10.     code_in in integer,text_in in varchar2)
  11.   is
  12.   begin
  13.     insert into logtab
  14.     values(code_in,text_in,sysdate,user,sysdate,user);
  15.   end;

  16.   procedure saveline(
  17.     code_in in integer,text_in in varchar2)
  18.   is
  19.     pragma autonomous_transaction;
  20.   begin
  21.     putline(code_in, text_in);
  22.     commit;
  23.     exception when others then rollback;
  24.   end;
  25. end log;
  26. /
3. 一个简单的例子

选择一个不存在的数据,查看logtab里的记录

点击(此处)折叠或打开

  1. declare
  2. sal pls_integer;
  3. begin
  4. select salary into sal from employees where employee_id = 11111;
  5. exception
  6.   when others
  7.     then sys.log.saveline(sqlcode,sqlerrm);
  8. end;
  9. /
查看logtab里的记录

点击(此处)折叠或打开

  1. select * from logtab;

  1.       CODE TEXT                           CREATED_O CREATE_BY CHANGE_ON CHANGE_BY
  2. ---------- ------------------------------ --------- ---------- --------- ----------
  3.        100 ORA-01403: no data found       10-JUN-18 SYS        10-JUN-18 SYS








网页名称:ORACLEPL/SQL利用自治事务实现日志记录
网页路径:http://bjjierui.cn/article/jdgdoh.html

其他资讯