Ir para conteúdo
Fórum Script Brasil
  • 0

Executar uma função dentro so select, estando a mesma fora do Banco


luisil

Pergunta

Galera, beleza..

Como sou novo em SQL, gostaria de uma ajuda de vocês. Estou presisando executa um função direto num select ou vice versa. Esta função me traz a quantidade de dias úteis entre uma data, sendo que preciso pegar esta data numa tabela. Gostaria a ajuda de vocês pra saber como faço isso. Segue abaixo a função e o select da tabela.

FUNÇÃO:

DECLARE 
  V_DATA_INI DATE            := TO_DATE('01/05/2009','DD/MM/YYYY');
  V_DATA_FIM DATE            := TO_DATE('31/05/2009','DD/MM/YYYY'); 
  V_QT_DIAS_UTEIS NUMBER(10) := 0; 

   FUNCTION FUN_DIAS_UTEIS (P_DATA_INICIAL IN DATE, 
                            P_DATA_FINAL   IN DATE) 
   RETURN NUMBER  

   IS                          

     v_dia_semana NUMBER(10) := 0; 
     v_dias_uteis NUMBER(10) := 0;
	 V_DDD        VARCHAR2(2);	 

   BEGIN IF to_number(TO_char( P_DATA_INICIAL , 'D' )) NOT IN (1,7) 
     THEN 
        v_dias_uteis := 1; -- Conto a própria data inicial, se não for sábado ou domingo 
     END IF;

     FOR x in 1..( P_DATA_FINAL - P_DATA_INICIAL ) 
     LOOP 

        v_dia_Semana := to_number(TO_char( P_DATA_INICIAL + x, 'D' ));  

        IF v_dia_semana NOT IN (1,7) -- 1,7 não somo sábado e domingo. 
        THEN 
           v_dias_uteis := v_dias_uteis + 1; 
        END IF; 

     END LOOP;

     RETURN v_dias_uteis;  
   EXCEPTION 
     WHEN OTHERS THEN 
       raise_application_error(-20001,'Erro ao selecionar dias úteis: ' || SQLERRM );  
   END FUN_DIAS_UTEIS; 

BEGIN V_QT_DIAS_UTEIS := FUN_DIAS_UTEIS (V_DATA_INI, V_DATA_FIM); 
   dbms_output.put_line('Qtd. Dias Úteis: ' || V_QT_DIAS_UTEIS); 
END;
SELECT:
SELECT DDD, DATA_ABERTURA_TT, DATA_FECHAMENTO_TT
             FROM SP39603

Desde já agradeço a ajuda.

Att,

Adalba

Editado por quintelab
Adicionado BBCode Sql
Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

Oi, 'luisil'

Tecnicamente você poderá usar assim:

SELECT FUN_DIAS_UTEIS (DATA_ABERTURA_TT, 
DATA_FECHAMENTO_TT) AS  DDD, DATA_ABERTURA_TT, DATA_FECHAMENTO_TT
FROM SP39603

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,9k
×
×
  • Criar Novo...