Sign in to follow this  
fabio.nascimento

Erros que não Consigo Identificar

Recommended Posts

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.

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.

Valeu pelas dicas.

Fabio Nascimento

Share this post


Link to post
Share on other sites

Olá Fábio,

Puxa já faz um tempão que vejo isso, essas PROCEDURES...

Saldades... HEHHE :)

Vamos lá:

Esses erros realmente tem que ser analizado com muita cautela

eu num entendo muito da linguagem tecnica e tals, mas vouo tentar ajudar. Esse CURSOR que você inseriu no meio do deu código está errado, você deve coloca-lo na parte de cima do seu código, logo abaixo do outro cursor:

tenta rodar essa, aí se der outro erro você posta:

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; 

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;

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

Abs. Progr'amador.

Share this post


Link to post
Share on other sites

Valeu Programador,

Eu já tinha me informado, realmente era isso mesmo, mas valeu pelo seu toque, esses acontecem mesmo, visto que estou começando e tals....

Abraços cara!

qualquer duvida que eu tiver vou te contactar, ok ?

Fabio Nascimento

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this