[firebase-br] AJUDA NA STORED PROCEDURE ABAIXO - ME AJUDEM.

Rubens J Rodrigues rubens.rodrigues em abrevo.com.br
Seg Set 11 09:30:25 -03 2006


Pessoal,

Tenho cenário abaixo . . . onde preciso extrair todos os dias realmente 
úteis de um determinado período, neste caso passado via parametros. 
Porém estou com dificuldades para montar a procedure, ora entro no loop 
e fico travo o select, ora o resultado duplica alguns dias.
Então, baseado no codigo abaixo e com a experiência de muitos de vocês, 
gostaria de uma ajuda.

A idéia é : Montar uma rotina em sql, onde eu traga no resultado os dias 
realmentes úteis dentro de um período especificado via parametros.

Conto com a ajuda de vocês,

Att.

Rubens


TABELA DE FERIADOS.
CODFERIADO INT,
DATAFERIADO DATE



CREATE PROCEDURE TESTE(
   E_DATAINI DATE,
   E_DATAFIM DATE)
RETURNS(
   S_DIASEMANA INTEGER,
   S_DATA DATE)
AS
DECLARE VARIABLE V_DIA INTEGER;
DECLARE VARIABLE V_FERIADO INTEGER;
BEGIN

  WHILE (E_DATAFIM > E_DATAINI) DO
   BEGIN

     SELECT COUNT(1) FROM FERIADOS WHERE DATA=:E_DATAINI INTO :V_FERIADO;

     IF (:V_FERIADO > 0) THEN
      BEGIN
       E_DATAINI = E_DATAINI +1;
       SUSPEND;
      END

     V_DIA=EXTRACT(WEEKDAY FROM E_DATAINI);

     IF (V_DIA <>0 AND V_DIA<>6) THEN
      BEGIN
       S_DIASEMANA=V_DIA;
       S_DATA=E_DATAINI;
       E_DATAINI=E_DATAINI+1;
       SUSPEND;
      END

   END
END





Mais detalhes sobre a lista de discussão lista