在procedure r_pro中的
insert into recpt_tbl values(recp_id,recp_name,location,recp_print,recp_worker,sysdate,memo); 
if sqlcode<>0 then 
      rollback to b;
这段代码,这样用savepoint,如果不成功,能不能rollback到b点???

解决方案 »

  1.   

    我指的是着段代码:
    begin
    savepoint b;
    if func_lock then
    dbms_output.put_line('success');
    recp_id:=r_type||to_char(sysdate,'yymmdd')||to_char(newid,'fm000');
    insert into recpt_tbl values(recp_id,recp_name,location,recp_print,recp_worker,sysdate,memo);
    if sqlcode<>0 then 
    rollback to b;
    我不知道会不会出现func_lock=true(锁定成功,得到一个最大序号),但是insert另外一张表的时候不成功,碰到这样的情况,我想把所有的事务操作rollback?用savepoint能不能rollback到b点??如果不能rollback到b点,而func_lock=true的话,不是一直都锁定那张纪录表了??这个怎么解决阿??