2017-09-02 5 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 

Antwort

0

In der obigen Abfrage gibt die IF-Bedingung false zurück (1 = 0) und fügt den Wert in die TEST-Tabelle ein. Das Skript innerhalb der catch-Blöcke wird nicht ausgeführt.

HINWEIS: CATCH-Anweisungen werden nur ausgeführt, wenn ein Fehler in den Anweisungen innerhalb des TRY-Blocks aufgetreten ist.

+0

Danke für die Erklärung –

Verwandte Themen