C#代码:

 

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


SQL存储过程代码:

 

 

ADO.NET嵌套SQL事务一例ALTER PROCEDURE [dbo].[CRM_SPGenProfileRevision]
ADO.NET嵌套SQL事务一例
@FormKey        int,
ADO.NET嵌套SQL事务一例
@Source            varchar(20),
ADO.NET嵌套SQL事务一例
@UserKey        int
ADO.NET嵌套SQL事务一例
AS 
ADO.NET嵌套SQL事务一例
-- ====================================================
ADO.NET嵌套SQL事务一例--
 Author:        Rock Niu
ADO.NET嵌套SQL事务一例--
 Create date: 2008-03-03
ADO.NET嵌套SQL事务一例--
 Description:    Generate a revision for specified form
ADO.NET嵌套SQL事务一例--
 Test:        EXEC [dbo].[CRM_SPGenProfileRevision] 945,'Ad-Hoc',18
ADO.NET嵌套SQL事务一例--
 ====================================================
ADO.NET嵌套SQL事务一例
begin
ADO.NET嵌套SQL事务一例    
declare    @currentVersion    int
ADO.NET嵌套SQL事务一例            
@IsCompany    bit
ADO.NET嵌套SQL事务一例            
@versionKey int
ADO.NET嵌套SQL事务一例            
@submitKey int,
ADO.NET嵌套SQL事务一例            
@trans int
ADO.NET嵌套SQL事务一例            
@error nvarchar(max),
ADO.NET嵌套SQL事务一例            
@formType varchar(50);
ADO.NET嵌套SQL事务一例
ADO.NET嵌套SQL事务一例    ADO.NET嵌套SQL事务一例
ADO.NET嵌套SQL事务一例
ADO.NET嵌套SQL事务一例    
begin try
ADO.NET嵌套SQL事务一例            
set     @trans = @@trancount;
ADO.NET嵌套SQL事务一例            
ADO.NET嵌套SQL事务一例            
if (@trans>0)
ADO.NET嵌套SQL事务一例                
begin
ADO.NET嵌套SQL事务一例                    
save tran localTran;
ADO.NET嵌套SQL事务一例                
end            
ADO.NET嵌套SQL事务一例            
else
ADO.NET嵌套SQL事务一例                
begin
ADO.NET嵌套SQL事务一例                    
begin tran;
ADO.NET嵌套SQL事务一例                
end
ADO.NET嵌套SQL事务一例
ADO.NET嵌套SQL事务一例            ADO.NET嵌套SQL事务一例.
ADO.NET嵌套SQL事务一例        
if (@trans=0)
ADO.NET嵌套SQL事务一例            
begin
ADO.NET嵌套SQL事务一例                
commit tran;
ADO.NET嵌套SQL事务一例            
end    
ADO.NET嵌套SQL事务一例    
end try
ADO.NET嵌套SQL事务一例    
begin catch
ADO.NET嵌套SQL事务一例        
--rollback any transction if error occurred.
ADO.NET嵌套SQL事务一例
        set @error =  error_message();
ADO.NET嵌套SQL事务一例        
if (XACT_STATE() <> 0)
ADO.NET嵌套SQL事务一例            
begin
ADO.NET嵌套SQL事务一例                
if (@trans>0)
ADO.NET嵌套SQL事务一例                    
begin
ADO.NET嵌套SQL事务一例                        
rollback tran localTran;
ADO.NET嵌套SQL事务一例                    
end        
ADO.NET嵌套SQL事务一例                
else
ADO.NET嵌套SQL事务一例                    
begin
ADO.NET嵌套SQL事务一例                        
rollback tran;
ADO.NET嵌套SQL事务一例                    
end
ADO.NET嵌套SQL事务一例            
end    
ADO.NET嵌套SQL事务一例        
raiserror 99999 @error;
ADO.NET嵌套SQL事务一例    
end catch
ADO.NET嵌套SQL事务一例    
ADO.NET嵌套SQL事务一例    
select @currentVersion as 'NewVersion';
ADO.NET嵌套SQL事务一例
end

 

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

相关文章: