中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ORACLE PL/SQL 利用自治事務實現日志記錄

發布時間:2020-08-08 20:59:38 來源:ITPUB博客 閱讀:194 作者:iliuhailong 欄目:關系型數據庫
程序中通常都要實現日志記錄功能,尤其是事務發生報錯時的錯誤日志。如果把日志記錄在數據庫中,可以方便后續的查詢和分析。但是如果直接把記錄日志的共能寫在事務中,如果事務發生ROLLBACK,記錄的日志也會發生ROLLBACK,明顯時不合適的。但是使用自治事務可以很方便的實現日志記錄功能,并且不會受主事務的影響。下面實現一個簡單的日志記錄例子。

1. 創建日志記錄表

點擊(此處)折疊或打開

  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







向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

石景山区| 买车| 库车县| 高州市| 东乌珠穆沁旗| 新龙县| 昭苏县| 庆阳市| 高清| 湘阴县| 田东县| 呼玛县| 延川县| 昭觉县| 通州市| 正安县| 内丘县| 南川市| 和林格尔县| 泾阳县| 城步| 全椒县| 南岸区| 武安市| 东乌珠穆沁旗| 玛沁县| 保亭| 长治市| 大埔区| 宣武区| 卓资县| 文安县| 莎车县| 礼泉县| 新安县| 高密市| 商丘市| 涞源县| 苍梧县| 忻城县| 安国市|