Procedure de consulta com sysdate.

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
thiago.segantini
Rank: Estagiário Pleno
Rank: Estagiário Pleno
Mensagens: 3
Registrado em: Sex, 05 Jun 2015 9:42 am

E ai galera...
Sou novo na linguagem SQL, e preciso fazer uma consulta para gerar um relatório todos os dias as 23:59 automaticamente.
Para isto uma JOB me resolve o problema, porém estou com algumas duvidas em relação a criação da procedure.
Se deve ou não haver parâmetros.
Segue código:

Selecionar tudo

CREATE OR REPLACE PROCEDURE LIT_EX_DESAPROVADOS_BLUMENAU

 AS
BEGIN

  SELECT B.NR_CONTROLE PRESC_BLUMENAU
        ,SUBSTR(OBTER_PESSOA_ATENDIMENTO(OBTER_ATENDIMENTO_PRESCR(B.NR_PRESCRICAO), 'N'), 1, 150) PACIENTE
        ,SUBSTR(OBTER_DESC_PRESCR_PROCED(A.NR_PRESCRICAO, A.NR_SEQ_PRESCRICAO, 0), 1, 250) EXAME
    FROM RESULT_LABORATORIO_COPIA A
        ,PRESCR_MEDICA            B
   WHERE A.NR_PRESCRICAO = B.NR_PRESCRICAO
     AND B.CD_SETOR_ENTREGA = 322 --CÓDIGO DE BLUMENAU
     AND A.DT_DESAPROVACAO BETWEEN INICIO_DIA(SYSDATE) AND FIM_DIA(SYSDATE)
  
  ;
END

Valeu
DanielNN
Moderador
Moderador
Mensagens: 641
Registrado em: Seg, 03 Set 2007 3:26 pm
Localização: Fortaleza - CE
att,

Daniel N.N.

Não entendi bem seu questionamento.
Que tipos de parâmetros você está em dúvida se deve ou não existir?

Sobre o código achei curioso o trecho:

Selecionar tudo

AND A.DT_DESAPROVACAO BETWEEN INICIO_DIA(SYSDATE) AND FIM_DIA(SYSDATE)
Esse INICIO_DIA , basta usar o TRUNC que já retorna as 00:00:00 do dia. Já para o fim do dia basta adicionar 0.99999 para ficar as 23:59:59 do dia. Faria assim:

Selecionar tudo

AND A.DT_DESAPROVACAO BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 0.99999 
Responder
  • Informação