Essa procedure lhe retorna todos os aniversariantes de um determinado periodo dia/mes SET TERM ^ ; DECLARE VARIABLE DTA_INI TIMESTAMP; DECLARE VARIABLE DTA_FIM TIMESTAMP; BEGIN SELECT cast(:STRDTA_INI||'/'||cast(extract(year from Max(data_nascimento)) AS varchar(10)) as TIMESTAMP) as b FROM FUNCIONARIO into DTA_INI; SELECT cast(:STRDTA_FIM||'/'||cast(extract(year from Max(data_nascimento)) AS varchar(10)) as TIMESTAMP) as b FROM FUNCIONARIO into DTA_FIM; WHILE (DTA_INI <= DTA_FIM) DO BEGIN FOR SELECT NOME,SALARIO, DATA_NASCIMENTO FROM FUNCIONARIO WHERE EXTRACT(DAY FROM DATA_NASCIMENTO) = EXTRACT(DAY FROM :DTA_INI) AND EXTRACT(MONTH FROM DATA_NASCIMENTO) = EXTRACT(MONTH FROM :DTA_INI) ORDER BY NOME, DATA_NASCIMENTO INTO :NOME,:SALARIO, :DTA_NASC DO SUSPEND; DTA_INI = DTA_INI + 1; END END ^ SET TERM ; ^