91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

扶沟县| 商南县| 普洱| 儋州市| 阿坝县| 安岳县| 扎囊县| 水城县| 沾益县| 玉山县| 江西省| 蒲城县| 上林县| 朝阳市| 六盘水市| 遂昌县| 陆良县| 建昌县| 福建省| 隆化县| 乐业县| 府谷县| 商洛市| 延吉市| 册亨县| 梁河县| 英德市| 贡嘎县| 资中县| 盐津县| 阿坝县| 贡觉县| 资阳市| 宿州市| 巴林左旗| 崇礼县| 广河县| 石泉县| 西宁市| 县级市| 莲花县|