Raiserror siempre 50000
Publicado por RelmonT (3 intervenciones) el 09/05/2007 00:19:18
Hola, como les va.
Estoy haciendo una aplicacion en la que uso un procedimiento al macenado con transacciones, la cuestion es que siempre me retorna error 50000 y yo quiero el error especifico que se da para controlar acorde a el el funcionamiento de la aplicacion, el procedimiento almacenado en escencia es el siguiente:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [personal].[Ingresos]
(
@Codigo int ,
@NumIdentidad nvarchar(19) ,
@Nombre nvarchar(40) ,
@Dui nvarchar(10) ,
)
AS
begin try
begin transaction
DECLARE @numemp AS smallint
SET @numemp = 0
select @numemp = count(*) from personal.empleados
where dui = @dui
if @numemp > 0
raiserror ('EL EMPLEADO YA ESTA REGISTRADO EN LA BASE... VERIFIQUE!',11,1)
insert into personal.empleados (...)
values (...)
insert into personal.transaccionesempleados(...)
values (...)
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
DECLARE @ERROR_MESSAGE NVARCHAR(4000);
DECLARE @ERROR_SEVERITY INT;
SELECT @ERROR_MESSAGE = ERROR_MESSAGE(), @ERROR_SEVERITY = ERROR_SEVERITY();
raiserror(@ERROR_MESSAGE, @ERROR_SEVERITY,1)
rollback transaction
END CATCH
RETURN
----------------------------------------
se supone que la idea es que hago una preverificacion si ya existe ese empleado por medio de su documento de identificacion antes de ser ingresado (por si ya trabajo antes) y lugo claro, el control de la transaccion. Luego necesito mandar el error en especifico a mi aplicacion pero independientemente lo que pase, siempre me captura un error 50000 y la verdad ya no puedo controlar el flujo de mi aplicacion como quiero. En que ando mal :S???
Gracias de antemano, se cuidan....
Estoy haciendo una aplicacion en la que uso un procedimiento al macenado con transacciones, la cuestion es que siempre me retorna error 50000 y yo quiero el error especifico que se da para controlar acorde a el el funcionamiento de la aplicacion, el procedimiento almacenado en escencia es el siguiente:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [personal].[Ingresos]
(
@Codigo int ,
@NumIdentidad nvarchar(19) ,
@Nombre nvarchar(40) ,
@Dui nvarchar(10) ,
)
AS
begin try
begin transaction
DECLARE @numemp AS smallint
SET @numemp = 0
select @numemp = count(*) from personal.empleados
where dui = @dui
if @numemp > 0
raiserror ('EL EMPLEADO YA ESTA REGISTRADO EN LA BASE... VERIFIQUE!',11,1)
insert into personal.empleados (...)
values (...)
insert into personal.transaccionesempleados(...)
values (...)
COMMIT TRANSACTION;
END TRY
BEGIN CATCH
DECLARE @ERROR_MESSAGE NVARCHAR(4000);
DECLARE @ERROR_SEVERITY INT;
SELECT @ERROR_MESSAGE = ERROR_MESSAGE(), @ERROR_SEVERITY = ERROR_SEVERITY();
raiserror(@ERROR_MESSAGE, @ERROR_SEVERITY,1)
rollback transaction
END CATCH
RETURN
----------------------------------------
se supone que la idea es que hago una preverificacion si ya existe ese empleado por medio de su documento de identificacion antes de ser ingresado (por si ya trabajo antes) y lugo claro, el control de la transaccion. Luego necesito mandar el error en especifico a mi aplicacion pero independientemente lo que pase, siempre me captura un error 50000 y la verdad ya no puedo controlar el flujo de mi aplicacion como quiero. En que ando mal :S???
Gracias de antemano, se cuidan....
Valora esta pregunta


0