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 日志表

转载于:https://my.oschina.net/u/2336787/blog/1594583

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值