Alguns erros q nao consigo identificar, por favor
Pessoal,
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.
Erro emitido pelo oracle.
Desde já agradeço qq 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
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
Desde já agradeço qq 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
Fabioanascimento
Curtidas 0
Respostas
Lucas Silva
22/09/2006
Fábio,
o cursor Reclamação produto tem que ficar antes do begin.
o cursor Reclamação produto tem que ficar antes do begin.
CURSOR RECLAMACAO_PRODUTO ( P_PROCESSOS_DESCRICAO_COD IN NUMBER ) IS
GOSTEI 0