ADO.NET嵌套SQL事务一例

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.

你可能感兴趣的:(.net)