ADO.NET嵌套SQL事务一例

ADO.NET嵌套SQL事务一例

C#代码:

 

 SqlConnection conn  =   new  SqlConnection( " Data Source=192.168.1.200;Initial Catalog=PBCRM;Persist Security Info=True;User ID=sa;Password=123456 " );
            conn.Open();
            SqlTransaction tran 
=   conn.BeginTransaction();
            SqlCommand cmd 
=   new  SqlCommand( " exec CRM_SPGenProfileRevision 10, '1', 1 " ,conn, tran);         
            
int  row  =  cmd.ExecuteNonQuery();
            
// trans.Rollback();
            tran.Commit();
            conn.Close();


SQL存储过程代码:

 

 

ALTER   PROCEDURE   [ dbo ] . [ CRM_SPGenProfileRevision ]
@FormKey          int ,
@Source              varchar ( 20 ),
@UserKey          int
AS  
--  ====================================================
--
 Author:        Rock Niu
--
 Create date: 2008-03-03
--
 Description:    Generate a revision for specified form
--
 Test:        EXEC [dbo].[CRM_SPGenProfileRevision] 945,'Ad-Hoc',18
--
 ====================================================
begin
    
declare      @currentVersion      int
            
@IsCompany      bit
            
@versionKey   int
            
@submitKey   int ,
            
@trans   int
            
@error   nvarchar ( max ),
            
@formType   varchar ( 50 );

    

    
begin  try
            
set       @trans   =   @@trancount ;
            
            
if  ( @trans > 0 )
                
begin
                    
save   tran  localTran;
                
end             
            
else
                
begin
                    
begin   tran ;
                
end

            .
        
if  ( @trans = 0 )
            
begin
                
commit   tran ;
            
end     
    
end  try
    
begin  catch
        
-- rollback any transction if error occurred.
         set   @error   =   error_message();
        
if  (XACT_STATE()  <>   0 )
            
begin
                
if  ( @trans > 0 )
                    
begin
                        
rollback   tran  localTran;
                    
end         
                
else
                    
begin
                        
rollback   tran ;
                    
end
            
end     
        
raiserror   99999   @error ;
    
end  catch
    
    
select   @currentVersion   as   ' NewVersion ' ;
end

 

执行结果,成功时两个事务一起commit,有错误时,两个事务一起rollback.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值