Si Exec este lote:Cuando un error detiene la ejecución en SQL Server?
begin transaction
PRINT 'start'
PRINT 1/0
PRINT 'continue'
drop table dbo.tblPrueba
select * from dbo.tblPrueba
PRINT 'finish'
rollback transaction
que la salida es la siguiente:
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'.
estoy forzando dos errores: - el primero: IMPRESIÓN 1/0 (que genera este error :
Msg 8134, Level 16, State 1, Line 3
Divide by zero error encountered.
) Y continuar con la ejecución del lote
- la segunda:
drop table dbo.tblPrueba
select * from dbo.tblPrueba
que genera este error:
Msg 208, Level 16, State 1, Line 6
Invalid object name 'dbo.tblPrueba'.
Y detiene la ejecución del lote
¿Cuál es la diferencia entre ellos? ¿Dónde puedo aprender aquellos que detienen la ejecución y aquellos que no?
Muchas gracias!
@PankajGarg: Si terminas en un bloque CATCH, te revertiré.También uso SET XACT_ABORT ON, que se revertirá de todos modos – gbn