还是T-SQL 转换成PL-SQL的问题T-SQL 代码:
           begin transaction;   ----开始事务
              if @trapping_method='C'
                 begin
                    delete from exp_data where type='UNBILLED_CHARGES';
                            。
                            。
                            。
           if @@error<>0 
      begin
   rollback transaction;----回滚事务
            
  else
            

 commit transaction;  ----提交事务
end; 我想问下 转换成PL/SQL 中这个 开始一段事务 怎么写??? 回滚是rollback  提交是commit
        T-SQL 定义了事务的开始所以回滚事务才知道回到哪但ORACLE里怎么设置这个呢??
        换句话说就是 这段T-SQL 怎么转换成PL/SQL呢??

解决方案 »

  1.   

    oracle中不需要象MS SQL SERVER中那样处理事务。参考sql如下:
                ----开始事务
                  if trapping_method='C'
                    begin
                        delete from exp_data where type='UNBILLED_CHARGES';
                                。
                                。
                                。
                  end if;
        commit;
        exception    
                      when   others   then    
                              rollback;               <--------如果出错则回滚.   
    end; 
      

  2.   

          savepoint a;              if trapping_method='C' 
                    
                        delete from exp_data where type='UNBILLED_CHARGES'; 
                                。 
                                。 
                                。 
              if error <>0 
          begin 
      rollback to a;----回滚事务 
                 
      else 
                 commit;  ----提交事务 
      

  3.   

      savepoint a; 
       begin--内部块
                  if trapping_method='C' 
                    
                        delete from exp_data where type='UNBILLED_CHARGES'; 
                                。 
                                。 
                                。 
              commit;----提交事务 
     exception--异常
      when others then
      rollback to a;----回滚事务 
                 
        end;  --内部块结束
      

  4.   

    其实我的想法也是设置个SAVEPOINT 
      

  5.   

    同意一楼,PL-SQL不用像在java或.net调用那样要开始事务,PL-SQL本身就在数据库里面,你只要执行,他就已经自动开始了事务,你自己需要控制的仅仅是数据的提交和回滚就可以了。