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
Pergunta
luisil
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:
SELECT:Desde já agradeço a ajuda.
Att,
Adalba
Editado por quintelabAdicionado BBCode Sql
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
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.