Se exec questo lotto:Quando un errore interrompe l'esecuzione in SQL Server?
begin transaction
PRINT 'start'
PRINT 1/0
PRINT 'continue'
drop table dbo.tblPrueba
select * from dbo.tblPrueba
PRINT 'finish'
rollback transaction
L'output è questo:
start
Msg 8134, Level 16, State 1, Line 3
Divide by zero error encountered.
continue
Msg 208, Level 16, State 1, Line 6
Invalid object name 'dbo.tblPrueba'.
sto forzando due errori: - il primo: STAMPA 1/0 (che genera questo errore :
Msg 8134, Level 16, State 1, Line 3
Divide by zero error encountered.
) E continuare l'esecuzione del lotto
- il secondo:
drop table dbo.tblPrueba
select * from dbo.tblPrueba
che genera questo errore:
Msg 208, Level 16, State 1, Line 6
Invalid object name 'dbo.tblPrueba'.
E interrompe l'esecuzione del batch
Qual è la differenza tra loro? Dove posso imparare quelli che fermano l'esecuzione e quelli che non lo fanno?
Grazie mille !!
@PankajGarg: Se si finisce in un blocco CATCH, vorrei Rollback.Utilizzo anche SET XACT_ABORT ON che eseguirà il rollback in ogni caso – gbn