Boa tarde, primeiramente gostaria de salientar q sou novato em banco de dados, estou aprendendo bastante e pra variar me apaixonando.
Não possuo experiencia suficiente para decifrar as mensagens de erros emitidas pelo oracle, dessa forma solicito a ajuda dos companheitos.
Obs: Acredito que meu erro se resuma a Begins e Ends da vida, mas ainda apanho no que diz respeito a inicio e fim de bloco de execução.
Segue abaixo minha procedure + erro relatado.
CREATE OR REPLACE PROCEDURE SP_REL_TAREFA4( P_DATA IN DATE )
AS
CURSOR ENTRADA_RECLAMACAO ( P_DATA IN DATE ) IS
-- Fila de reclamacao
SELECT IDENTIFICACAO, DESCRICAO, COD_DESCRICAO, QUANTIDADE
FROM
(
SELECT '1' IDENTIFICACAO,
RTRIM(TTR.VARDSCTIPORECLAMACAO) DESCRICAO,
TTR.NUMIDTIPORECLAMACAO,
COUNT (TP.NUMIDPROCESSO) QUANTIDADE
FROM TBPROCESSOS TP,
TBPROCESSOSRECLAMACAO TPR,
TBTIPORECLAMACAO TTR
WHERE TP.NUMIDPROCESSO = TPR.NUMIDPROCESSO
AND TPR.NUMIDTIPORECLAMACAO = TTR.NUMIDTIPORECLAMACAO
AND TP.FLGTIPOPROCESSO = 'R'
AND TP.DATABERTURA >= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 1))),'DD/MM/YYYY')||' 00:00:00','DD/MM/YYYY HH24:MI:SS')
AND TP.DATABERTURA <= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 2))),'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS')
GROUP BY TTR.VARDSCTIPORECLAMACAO
);
E ENTRADA_RECLAMACAO%ROWTYPE;
P_PROCESSOS_DESCRICAO VARCHAR2(200);
P_PROCESSOS_DESCRICAO_COD NUMBER;
P_PROCESSOS_TOT NUMBER;
P_IDENTIFICACAO VARCHAR2(1);
--P_PROCESSOS_PRODUTO VARCHAR2(200);
--P_PROCESSOS_PRODUTOQTD NUMBER;
FILE_PATH VARCHAR2(100) := '/spa/relatorios';
FILE_HANDLE UTL_FILE.FILE_TYPE;
W_LINHA VARCHAR2(300);
W_TRACO0 VARCHAR2(170) := LPAD ( ' ', 170, ' ' );
W_TRACO1 VARCHAR2(170) := LPAD ( ' ', 170, '-' );
W_TRACO2 VARCHAR2(170) := LPAD ( ' ', 170, '=' );
W_CONTACARACTER NUMBER;
BEGIN
W_CONTACARACTER :=0;
FILE_HANDLE := UTL_FILE.FOPEN ( FILE_PATH, 'REL_TAREFA4.TXT', 'w' );
W_LINHA := 'Relatorio consolidado por fila de reclamacao '||LPAD ( ' ', 80, ' ' )||
to_char(sysdate,'DD/MM/YYYY HH24:MI:SS');
UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );
UTL_FILE.PUT_LINE ( FILE_HANDLE, W_TRACO2 );
UTL_FILE.PUT_LINE(FILE_HANDLE, '');
W_LINHA := 'Fila de reclamacao '||LPAD ( ' ', 80, ' ' )|| 'Produto' ||LPAD ( ' ', 25, ' ' )||'Core'||LPAD ( ' ', 10, ' ' )||'Total por reclamacao';
UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );
UTL_FILE.PUT_LINE ( FILE_HANDLE, W_TRACO1 );
--UTL_FILE.PUT_LINE(FILE_HANDLE, '');
P_PROCESSOS_TOT :=0;
FOR E IN ENTRADA_RECLAMACAO (P_DATA)
LOOP
P_PROCESSOS_DESCRICAO := E.DESCRICAO;
P_PROCESSOS_TOT := E.QUANTIDADE;
P_IDENTIFICACAO := E.IDENTIFICACAO;
P_PROCESSOS_DESCRICAO_COD := E.COD_DESCRICAO;
W_CONTACARACTER := 155 - LENGTH(P_PROCESSOS_DESCRICAO);
W_LINHA := P_PROCESSOS_DESCRICAO ||LPAD ( ' ', W_CONTACARACTER, ' ' )||P_PROCESSOS_TOT;
UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );
--Colocar aqui uma nova busca filtrando produto por reclamacao
--inicia Cursor para os produtos por reclamacao
CURSOR RECLAMACAO_PRODUTO ( P_PROCESSOS_DESCRICAO_COD IN NUMBER ) IS
-- Fila de reclamacao
SELECT IDENTIFICACAO, DESCRICAO, QUANTIDADE
FROM
(
SELECT '2' IDENTIFICACAO,
RTRIM(TPR.VARDSCPRODUTO) DESCRICAO,
COUNT(TP.NUMIDPRODUTO) QUANTIDADE
FROM TBPROCESSOS TP,
TBPRODUTOS TPR,
TBPROCESSOSRECLAMACAO TPROCR,
TBTIPORECLAMACAO TTR
WHERE TP.NUMIDPRODUTO = TPR.NUMIDPRODUTO
AND TP.NUMIDPROCESSO = TPROCR.NUMIDPROCESSO
AND TPROCR.NUMIDTIPORECLAMACAO = TTR.NUMIDTIPORECLAMACAO
AND TTR.NUMIDTIPORECLAMACAO = P_PROCESSOS_DESCRICAO_COD
AND TP.DATABERTURA >= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 1))),'DD/MM/YYYY')||' 00:00:00','DD/MM/YYYY HH24:MI:SS')
AND TP.DATABERTURA <= TO_DATE( TO_CHAR((TRUNC(FU_RECUPERA_PERIODO(P_DATA, 2))),'DD/MM/YYYY')||' 23:59:59','DD/MM/YYYY HH24:MI:SS')
GROUP BY TPR.VARDSCPRODUTO
);
R RECLAMACAO_PRODUTO%ROWTYPE;
W_CONTACARACTER :=0;
--P_PROCESSOS_TOT :=0;
FOR R IN RECLAMACAO_PRODUTO (P_PROCESSOS_DESCRICAO_COD)
LOOP
P_PROCESSOS_DESCRICAO := R.DESCRICAO;
P_PROCESSOS_TOT := R.QUANTIDADE;
P_IDENTIFICACAO := R.IDENTIFICACAO;
--Impressao
W_CONTACARACTER := 155 - LENGTH(P_PROCESSOS_DESCRICAO);
W_LINHA := P_PROCESSOS_DESCRICAO ||LPAD ( ' ', W_CONTACARACTER, ' ' )||P_PROCESSOS_TOT;
UTL_FILE.PUT_LINE ( FILE_HANDLE, W_LINHA );
P_PROCESSOS_TOT := 0;
END LOOP;
P_PROCESSOS_TOT := 0;
END LOOP;
UTL_FILE.FCLOSE ( FILE_HANDLE );
END SP_REL_TAREFA4;
Erro emitido pelo oracle
Type PROCEDURE
Owner SPATST
Name SP_REL_TAREFA4
Line Error text
81 PLS-00103: Encountered the symbol "RECLAMACAO_PRODUTO" when expecting one of the following:
:= . ( @ % ;
The symbol ":=" was substituted for "RECLAMACAO_PRODUTO" to continue.
81 PLS-00103: Encountered the symbol "SELECT" when expecting one of the following:
. ( * % & = - + ; < / > in mod not rem an exponent (**)
<> or != or ~= >= <= <> and or like between is null is not ||
106 PLS-00103: Encountered the symbol "=" when expecting one of the following:
constant exception <an identifier>
<a double-quoted delimited-identifier> table LONG_ double
Valeu pelas dicas.
Fabio Nascimento