Hola. El codigo es el siguiente.
Código SQL
[-]CREATE PROCEDURE FALTAS(
LEGAJO INTEGER,
DESDE DATE,
HASTA DATE)
RETURNS(
DIAS VARCHAR(100) CHARACTER SET NONE,
FALT VARCHAR(100) CHARACTER SET NONE)
AS
DECLARE VARIABLE LEG INTEGER;
DECLARE VARIABLE FEC SMALLINT;
DECLARE VARIABLE CON INTEGER;
BEGIN
dias=''; falt='';
CON=extract(day from desde);
while (con<(extract(day from hasta)+1)) do
begin
for select distinct legajo,extract(day from fecha)
from horario
where (fecha between :desde and :hasta) and legajo=:legajo
order by fecha
into :leg, :fec
do
begin
if (fec=con) then
begin
dias = dias || cast(fec as varchar(2)) || '-';
break;
end
end
if (fec!=con) then falt=falt || cast(con as varchar(2)) || '-';
con=con+1;
end
SUSPEND;
END ^
SET TERM ; ^
Este me da dos cadenas, una con los dias fichados y otro con los dias no fichados.
Los parametros de fecha tienen que ser del mismo mes. Y el codigo esta sin depurar. Puede haber algun error. Ahora me funciona con los datos de prueba.
Escriba antes cualquier critica, por favor.
Gracias.