Creo que lo mejor es que hagas try-catch y después decida qué hacer, copio y pego...
BEGIN TRY BEGIN TRANSACTION ....sentnacias.... END COMMIT TRANSACTION END TRY BEGIN CATCH ROLLBACK TRANSACTION DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE(); -- Use RAISERROR inside the CATCH block to return -- error information about the original error that -- caused execution to jump to the CATCH block. RAISERROR (@ErrorMessage, -- Message text. @ErrorSeverity, -- Severity. @ErrorState -- State. ); END CATCH Saludos, Leonardo Micheloni. 2009/1/29 Omar Bellio <[email protected]> > Muy buenas a todos! > > A ver... en algunas stored procedures, tengo errores atrapados de la > siguiente manera: > > if @@error <> 0 set @cRetVal = 'Error bla bla bla' > > o también: > > if @@error > 0 > RAISERROR ('Error bla bla bla', 16, 1) --esto más que nada en triggers, > pero supongo que en sp tiene que > > andar igual. > > El tema es que ante determinados errores (específicamente ahora tengo el de > conflictos de integridad refrencial) no funciona el trapping y me devuelve > un espantoso mensaje que no es el mío. > > No encontré (o no supe ver) en los BOL una pista sobre esto ¿alguna > sugerencia al respecto? > > Ya sé que se podría chequer primero la existencia de registros en > conflicto, pero ¿se puede hacer que me devuelva para esos casos el mensaje > que yo quiero? > > Gracias por el tiempo dedicado! >
