Boa tarde, primeiramente gostaria de salientar que 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
Desde já agradeço qualquer dica, as vezes dar o peixe não é o foco deste fórum dessa forma quero realmente aprender ou seja quero pescar.
Pergunta
fabio.nascimento
Pessoal,
Boa tarde, primeiramente gostaria de salientar que 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.
Erro emitido pelo oracleDesde já agradeço qualquer dica, as vezes dar o peixe não é o foco deste fórum dessa forma quero realmente aprender ou seja quero pescar.
Valeu pelas dicas.
Fabio Nascimento
Link para o comentário
Compartilhar em outros sites
2 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.