try severity generate example error ejemplos custom catch sql sql-server sql-server-2008-r2 try-catch throw

severity - No puedo usar THROW SQL Server 2008 R2



throw sql 2016 (2)

Se introduce la sentencia THROW en SQL Server 2012

http://msdn.microsoft.com/en-us/library/ee677615.aspx

Puedes usar RAISERROR en RAISERROR lugar.

http://msdn.microsoft.com/en-us/library/483588bd-021b-4eae-b4ee-216268003e79(v=sql.105)

BEGIN CATCH DECLARE @ErrorMessage NVARCHAR(4000); DECLARE @ErrorSeverity INT; DECLARE @ErrorState INT; SELECT @ErrorMessage = ERROR_MESSAGE(), @ErrorSeverity = ERROR_SEVERITY(), @ErrorState = ERROR_STATE(); RAISERROR (@ErrorMessage, -- Message text. @ErrorSeverity, -- Severity. @ErrorState -- State. ); END CATCH;

SQL Server 2008 R2 Management Studio no reconoció mi lanzamiento en el siguiente ejemplo, dice

sintaxis incorrecta cerca de Throw

Estoy intentando emitir un error aquí, por lo que puedo manejarlo en mi sitio web cuando alguien inserta el mismo valor dos veces.

Begin Try insert into BusinessID (BusinessID) values (@ID) insert into BusinessID (BusinessID) values (@ID) End Try Begin Catch Print ''PK already exist'' THROW End Catch


Use RAISERROR lugar de Throw en su bloque sql.

Begin Try insert into BusinessID (BusinessID) values (@ID) insert into BusinessID (BusinessID) values (@ID) End Try Begin Catch Print ''PK already exist'' 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