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

相关文章
相关标签/搜索