Danielle, bom dia
Tudo bom???
Ficou excelente a sua explicação, me ajudou bastante a compreender e aproveitei para assistir as aulas desse módulo desde o começo para aprofundar meu entendimento antes de dar andamento.
Acabei adaptando conforme minha necessidade.
Porém deu erro desde a primeira linha, como não estou dominando ainda estou aqui te alugando mais um cadinho :D
Só para info, o select roda lindo porém quando coloquei tudo no cursor que deu o bug. Ah, e estou mandando também o erro que deu. Se puder me dar mais esse norte vai ser de imensa ajuda ^^
Declaração de ERRO:
Erro a partir da linha : 1 no comando -
DECLARE
CURSOR cur_CLIENTE
SELECT
DOC.CD_REGISTRO_DOCUMENTO "REGISTRO"
,DOC.CD_ATENDIMENTO "ATENDIMENTO"
,ATENDIME.CD_ORI_ATE
,ORI_ATE.DS_ORI_ATE
,DOC.NM_USUARIO
,DOC.CD_DOCUMENTO "COD. DOCUMENTO"
,DOCUMENTO.DS_DOCUMENTO "DOCUMENTO"
,to_char(DOC.DT_REGISTRO,'DD/MM/YYYY') "DIA"
,SUBSTR(TO_CHAR(DOC.DT_REGISTRO),10,20) AS HORARIO
,CORES.STATUS
FROM REGISTRO_DOCUMENTO DOC
INNER JOIN ATENDIME ATENDIME
ON ATENDIME.CD_ATENDIMENTO = DOC.CD_ATENDIMENTO
INNER JOIN DOCUMENTO DOCUMENTO
ON DOCUMENTO.CD_DOCUMENTO = DOC.CD_DOCUMENTO
INNER JOIN ORI_ATE ORI_ATE
ON ORI_ATE.CD_ORI_ATE = ATENDIME.CD_ORI_ATE
INNER JOIN VDIC_TRIAGEM_INFANTIL_COR CORES --// ATRELANDO VDIC //--
ON CORES.CD_ATENDIMENTO = DOC.CD_ATENDIMENTO
WHERE TO_CHAR(ATENDIME.DT_ATENDIMENTO,'DD/MM/YYYY' )= '30/06/2020'
AND ATENDIME.CD_ORI_ATE = '11'
AND DOC.SN_IMPRESSO NOT in ('C')
AND doc.cd_documento in ('180','157','115')
ORDER BY ATENDIME.CD_ATENDIMENTO,
CORES.STATUS,
HORARIO;
BEGIN
END;
Relatório de erros -
ORA-06550: linha 4, coluna 3:
PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
( ; é retornar
The symbol "é" was substituted for "SELECT" to continue.
ORA-06550: linha 17, coluna 1:
PLS-00103: Encountered the symbol "INNER" when expecting one of the following:
, ; for grupo having intersect menos ordem iniciar union onde
conectar
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action:
Erro a partir da linha : 2 no comando -
DECLARE
CURSOR cur_TEMPO_ATEND IS
SELECT
DOC.CD_REGISTRO_DOCUMENTO "REGISTRO"
,DOC.CD_ATENDIMENTO "ATENDIMENTO"
,ATENDIME.CD_ORI_ATE
,ORI_ATE.DS_ORI_ATE
,DOC.NM_USUARIO
,DOC.CD_DOCUMENTO "COD. DOCUMENTO"
,DOCUMENTO.DS_DOCUMENTO "DOCUMENTO"
,to_char(DOC.DT_REGISTRO,'DD/MM/YYYY') "DIA"
,SUBSTR(TO_CHAR(DOC.DT_REGISTRO),10,20) AS HORARIO
,CORES.STATUS
FROM REGISTRO_DOCUMENTO DOC
INNER JOIN ATENDIME ATENDIME
ON ATENDIME.CD_ATENDIMENTO = DOC.CD_ATENDIMENTO
INNER JOIN DOCUMENTO DOCUMENTO
ON DOCUMENTO.CD_DOCUMENTO = DOC.CD_DOCUMENTO
INNER JOIN ORI_ATE ORI_ATE
ON ORI_ATE.CD_ORI_ATE = ATENDIME.CD_ORI_ATE
INNER JOIN VDIC_TRIAGEM_INFANTIL_COR CORES --// ATRELANDO VDIC //--
ON CORES.CD_ATENDIMENTO = DOC.CD_ATENDIMENTO
WHERE TO_CHAR(ATENDIME.DT_ATENDIMENTO,'DD/MM/YYYY' )= '30/06/2020'
AND ATENDIME.CD_ORI_ATE = '11'
AND DOC.SN_IMPRESSO NOT in ('C')
AND doc.cd_documento in ('180','157','115')
ORDER BY ATENDIME.CD_ATENDIMENTO,
CORES.STATUS,
HORARIO;
V_REGISTRO REGISTRO_DOCUMENTO.CD_REGISTRO_DOCUMENTO%TYPE;
V_DATA_REGISTRO REGISTRO_DOCUMENTO.DT_REGISTRO%TYPE;
V_MOMENTO_ANTERIOR DATE;
V_CONTADOR INT :=0;
DIFERENCA_EM_HORAS NUMBER;
DIFERENCA_EM_MINUTOS NUMBER;
BEGIN
OPEN cur_TEMPO_ATEND;
LOOP
FETCH cur_TEMPO_ATEND INTO V_REGISTRO, V_DATA_REGISTRO;
EXIT WHEN cur_TEMPO_ATEND%NOTFOUND;
IF V_CONTADOR = 0
THEN V_MOMENTO_ANTERIOR := V_DATA;
END IF;
DIFERENCA_EM_HORAS := (V_DATA_REGISTRO - V_MOMENTO_ATERIOR)*24;
DIFERENCA_EM_MINUTOS := DIFERENCA_EM_HORAS * 60;
DBMS_OUTPUT.PUT_LINE ('MINUTOS: '|| ROUND(DIFERENCA_EM_MINUTOS));
V_CONTADOR := V_CONTADOR +1;
V_MOMENTO_ATENRIOR := V_DATA_REGISTRO;
END LOOP;
CLOSE cur_TEMPO_ATEND
END;
Relatório de erros -
ORA-06550: linha 58, coluna 1:
PLS-00103: Encountered the symbol "END" when expecting one of the following:
. ;
The symbol ";" was substituted for "END" to continue.
06550. 00000 - "line %s, column %s:\n%s"
*Cause: Usually a PL/SQL compilation error.
*Action: