oracle函數與事務

------------------------------函數與自治事務
CREATE OR REPLACE FUNCTION 函數名稱 RETURN VARCHAR2 IS
num number:=0;
p_err_row VARCHAR2(1000):='';
p_sqlerrm VARCHAR2(1000):='';
PRAGMA AUTONOMOUS_TRANSACTION;--聲明事務
BEGIN
  select count(1) into num from 表名 t  where exists ...;
  if num > 0 then
     RETURN 'WAIT';
  else
    ----------------------------------------------------
    --放入要事務
    --自治事務
    insert into user_info_increase_sj
    (id ,name)
    select id, name
    from 表;
    -- 2.更新證件類型
    update   表 set 字段='' where ....;
    --測試異常語句:insert into  表名 m (m.id) VALUES ('1');   
    commit;
    ----------------------------------------------------
  end if;
  RETURN 'OK';
EXCEPTION
  WHEN others THEN rollback;
  DBMS_OUTPUT.PUT_LINE('ERR');
  p_sqlerrm := sqlerrm; --錯誤信息
  p_err_row := dbms_utility.format_error_backtrace(); --錯誤行
  --自定義函數名稱,操做人,添加時間,錯誤信息,錯誤位置
  insert into 日誌表;
  commit;
  RETURN 'ERR';
end;
/
---------函數測試查詢:select 函數名稱() as RETURN from dual
--------- 測試查詢  select * from 日誌表sql

相關文章
相關標籤/搜索