Pular para o conteúdo
  • Este tópico contém 2 respostas, 2 vozes e foi atualizado pela última vez 18 anos, 4 meses atrás por fabioanascimento.
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #76582
    fabioanascimento
    Participante

      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.


      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
      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

      #76624
      drumond
      Participante

        fabio,

        A sintaxe do cursor esta equivocada, quando vc declara um cursor, depois vc tem que usar os seguintes commandos !!

        Open NOME_CURSOR; — Abrindo o cursor
        Fetch NOME_CURSOR into VARIAVEIS — retornaa linha do ponteiro do cursor nas variaveis que vc definir, depois vc deve utilizar um loop ou For, ou While como queira …

        O que reparei tambem, eh que vc nao declara as variareis antes de comecar o Begin, vc as estah declarando somente depois !!!

        Isto pode te trazer problemas, para identificar erros !!!
        Tem um tutorial de boas praticas de Pl/SQL aqui no site mesmo !!!

        Vale a pena perder um tempinho lendo ele, pois lah deixa muito claro a declaracao de variaveis e identacao do codigo !!

        Abracos e boa Sorte !!

        #76626
        fabioanascimento
        Participante

          Obrigado Drumond,. realmente não estou seguinte boas praticas nao, devido ao fato de ser novato.

          Mas com certeza vou ler as boas praticas e tentar segui-las ao máximo.

          Muito obrigado.

          Fabio Nascimento

        Visualizando 3 posts - 1 até 3 (de 3 do total)
        • Você deve fazer login para responder a este tópico.
        plugins premium WordPress