Quiero volver a lanzar la misma excepción en el servidor sql que se ha producido en mi bloque try. Puedo lanzar el mismo mensaje pero quiero lanzar el mismo error.cómo volver a lanzar la misma excepción en el servidor sql
BEGIN TRANSACTION
BEGIN TRY
INSERT INTO Tags.tblDomain
(DomainName, SubDomainId, DomainCode, Description)
VALUES(@DomainName, @SubDomainId, @DomainCode, @Description)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
declare @severity int;
declare @state int;
select @severity=error_severity(), @state=error_state();
RAISERROR(@@Error,@ErrorSeverity,@state);
ROLLBACK TRANSACTION
END CATCH
RAISERROR(@@Error, @ErrorSeverity, @state);
Esta línea mostrará el error, pero quiero funcionalidad algo por el estilo. Esto genera error con número de error 50000, pero quiero número Erron a ser arrojado que estoy pasando @@error
,
Quiero capturar este error hay en el frontend
es decir
catch (SqlException ex)
{
if ex.number==2627
MessageBox.show("Duplicate value cannot be inserted");
}
quiero esta funcionalidad que no se puede lograr usando raiseerror. No quiero dar un mensaje de error personalizado al final.
RAISEERROR debe devolver error mencionado más adelante cuando paso ErrorNo a ser lanzado en la captura
Msg 2627, Level 14, State 1, Procedure spOTest_DomainInsert,
Línea 14 Violación de Unique 'UK_DomainCode' CLAVE restricción. No se puede insertar la clave duplicada en el objeto 'Tags.tblDomain'. La declaración ha finalizado.
EDIT:
Cuál puede ser el inconveniente de no usar bloqueador intento de captura si quiero excepción que se maneja en frontend considerando procedimiento almacenado contiene varias consultas que necesitan ser ejecutados
Estaba usando esto en el medio de un procedimiento almacenado, y encontré que continuaría ejecutándose después de 'raiserror', que es diferente de cómo C# sale después de un' throw'. Así que agregué un 'return' dentro del' catch' porque quería hacer coincidir ese comportamiento. –
@BogdanBogdanov Revertí la edición porque el objetivo de este código es ser mínimo y no desvirtuar el código real ingresado en lugar del ... –
Ok, no hay problema, @Ben Gripka. Intento hacerlo más legible en la pantalla. Gracias por indicar la razón para realizar la reversión. –