关于SQL存储过程中的事务处理.
我现在想创建一个存储过程,同时向两个表中新增数据,我的要求是: 
 1.这两个新增操作只能全部完成或全部失败, 
 2.当第一个新增操作失败,则弹出错误提示,并中止继续操作. 
 3.如果第一个新增操作成功,而第二个新增操作失败,则弹出错误信息,并取消第一个新增的操作.
------解决方案--------------------失败就rollback 两个都成功的情况下结束事物
------解决方案--------------------事务
------解决方案--------------------create or replace procedure aa (o_msg out varchar2)is    
 exp_tb1 EXCEPTION; 
 exp_tb2 EXCEPTION; 
 err_msg varchar2(100); 
 begin  
   begin        
     err_msg:= 'insert table1 failed! '; 
     insert into table1 ...;   
     err_msg:= 'insert table2 failed! ';       
     insert into table2 ...;   
     err_msg:= 'insert OK! ';   
     commit; 
   EXCEPTION 
       WHEN OTHERS THEN 
         rollback; 
         o_msg := err_msg ||  '( ' ||SQLERRM|| ') '; 
         --dbms_output.put_line(v_step||v_msg); 
     end; 
 end aa;
------解决方案--------------------刚才那两个异常变量没有用到: 
 create or replace procedure aa (o_msg out varchar2)is    
 err_msg varchar2(100); 
 begin  
   begin        
     err_msg:= 'insert table1 failed! '; 
     insert into table1 ...;   
     err_msg:= 'insert table2 failed! ';       
     insert into table2 ...;   
     err_msg:= 'insert OK! ';   
     commit; 
   EXCEPTION 
       WHEN OTHERS THEN 
         rollback; 
         o_msg := err_msg ||  '( ' ||SQLERRM|| ') '; 
         dbms_output.put_line(o_msg); 
     end; 
 end aa;