2017-09-02 9 views
0
begin try 

    DECLARE @Message VARCHAR(200) 
    DECLARE @MaxUserCode INT 

    BEGIN TRANSACTION ADM_UPD_SalesUserDetails 

      IF 1=0 
      BEGIN  
       SET @Message = 'fail' 
       RAISERROR(@Message,16,1) 
      END 

    insert into test values(1,'pass') 
    commit TRANSACTION ADM_UPD_SalesUserDetails 

end try 

begin catch 

    IF @@TRANCOUNT > 0 
     ROLLBACK TRANSACTION ADM_UPD_SalesUserDetails 

    if @Message='fail' 
    select 'insert' 
    else 
    select 'ok' 

end catch 

Répondre

0

Dans la requête ci-dessus, la condition IF renvoie false (1 = 0) et insère la valeur dans la table TEST. Le script à l'intérieur des blocs catch ne sera pas exécuté.

REMARQUE: Les instructions CATCH seront exécutées uniquement si une erreur s'est produite dans les instructions du bloc TRY.

+0

Merci pour l'explication –