Procedimiento/Debugeo

Tengo 2 procedimientos almacenados para el cálculo de período de vacaciones, sin embargo, presentan error.
1) Cómo puedo debugear y testear el procedimiento (línea a línea)
2) Creo que hay un tema con las fechas, ¿pueden darme una mano con eso?
CREATE PROCEDURE M4PR_PER_PARTIC_ST
(@cID_SOCIEDAD VARCHAR(2),@cID_EMPLEADO VARCHAR(10),@dFEC_ALTA_EMPLEADO DATETIME , @nANO NUMERIC(4) )
AS
DECLARE
@dFEC_ANTIGUEDAD datetime,
@dFEC_INI_PERIODO numeric(4),
@dFEC_FIN_PERIODO numeric(4),
@nANTIGUEDAD numeric(2),
@nSALDO_DIAS_LEG numeric(2),
@nSALDO_DIAS_PRO numeric(2),
@nDIAS_DEVENGADO_LEG numeric(2),
@nDIAS_DEVENGADO_PRO numeric(2),
@nEXISTE_PERIODO numeric(2),
@nEXISTE_DIAS_PROGRESIVOS numeric(2)
BEGIN
SELECT @dFEC_ANTIGUEDAD = FEC_ANTIGUEDAD
FROM M4_FASES_ALTA
WHERE ID_SOCIEDAD=@cID_SOCIEDAD and ID_EMPLEADO=@cID_EMPLEADO
and FEC_ALTA_EMPLEADO=@dFEC_ALTA_EMPLEADO
IF @nANO IS NULL OR @nANO <= 1950 OR datepart(yy,@dFEC_ANTIGUEDAD) >@nANO
raiserror(50758, 16, -1) -- 'Error: En el año ingresado '
SELECT @nEXISTE_PERIODO = COUNT(*)
FROM M4_HT_PER_VAC_ST
WHERE ID_SOCIEDAD = @cID_SOCIEDAD AND
ID_EMPLEADO = @cID_EMPLEADO AND
FEC_ALTA_EMPLEADO = @dFEC_ALTA_EMPLEADO AND
ANIO_INICIO = @nANO
IF @nEXISTE_PERIODO = 0
BEGIN
SELECT @dFEC_INI_PERIODO = @nANO
SELECT @dFEC_FIN_PERIODO = @nANO+1
SELECT @nANTIGUEDAD = @nANO - datepart (yy,@dFEC_ANTIGUEDAD)
SELECT @nDIAS_DEVENGADO_LEG = 15
SELECT @nDIAS_DEVENGADO_PRO = FLOOR(( @nANTIGUEDAD - 10 ) / 3 )
IF @nDIAS_DEVENGADO_PRO < 0
SELECT @nDIAS_DEVENGADO_PRO = 0
SELECT @nSALDO_DIAS_LEG = @nDIAS_DEVENGADO_LEG
SELECT @nSALDO_DIAS_PRO = @nDIAS_DEVENGADO_PRO
INSERT INTO M4_HT_PER_VAC_ST
( ID_SOCIEDAD, ID_EMPLEADO, FEC_ALTA_EMPLEADO, ANIO_INICIO,ANIO_FIN, SALDO_DIAS_LEG, SALDO_DIAS_PRO, DIAS_DEVENGADO_LEG, DIAS_DEVENGADO_PRO)
VALUES (@cID_SOCIEDAD,@cID_EMPLEADO,@dFEC_ALTA_EMPLEADO,@dFEC_INI_PERIODO,@dFEC_FIN_PERIODO,@nSALDO_DIAS_LEG,@nSALDO_DIAS_PRO,@nDIAS_DEVENGADO_LEG,@nDIAS_DEVENGADO_PRO)
END
END
GO

1 Respuesta

Respuesta
1
Depende del motor de bases de datos que estés usando, de si tiene implementado un depurador de procedimientos (por ejemplo, el SQL Server 2000 sí lo tiene pero el 2005 ya no).
Siempre puedes poner instrucciones PRINT en los puntos que te interesen para visualizar las variables en cada momento y ejecutar el procedimiento desde el administrador de la base de datos, para ver lo que va escribiendo en la consola de mensajes.
Un saludo
David Rguez
Técnico en programación
JLM - Software
(Zamora - España)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas