Quase SEMPRE que vc ver mensagens do tipo "Encontrado o simbolo "xxx" quando 
um dos seguintes simbolos era esperado..." , o que ocorre é que está faltando 
um Operador/encadeamento PL/SQL : o analisador interno do PL/SQL trabalha por 
pareamento, ie,  ele sabe que todo BEGIN tem que terminar com um END, todo "(" 
tem que ter um ")" para o 'fechar', todo comando lógico TEM que terminar com um 
';' , todo IF com um END IF, coisas do tipo... Assim, se ele encontrou xxx 
antes do ; ou do ) ou do que seja que ele sabe que precisaria ter , ele vai 
reclamar do xxx .... 
  No seu caso parece ser algum parêntesis faltando, mas o yahoo!groups 
desmancha qualquer tipo de formatação, não dá pra analisar na msg, eu Recomendo 
que vc Idente o seu código, alinhando os parêntesis, os ENDs, etc, que 
certamente vc acha o que está faltando....

 []s

  Chiappa

--- Em oracle_br@yahoogrupos.com.br, Leonardo Silva <leonardo.drums@...> 
escreveu
>
> Pessoal,
> 
> Bom dia,
> 
> Estou tentando compilar a procedure abaixo, porém está dando erro na linha
> do caso, o select executa normalmente, porém ao tentar criar uma procedure
> utilizando o mesmo eu tenho o seguinte erro:
> 
> Compilation errors for PROCEDURE OPS$STOREP.TESTE_LEO
> Error: PLS-00103: Encontrado o simbolo "CASE" quando um dos seguintes
> simbolos era esperado:
> 
>           ( - + mod null <an identifier>
>           <a double-quoted delimited-identifier> <a bind variable> avg
>           count current max min prior sql stddev sum variance execute
>           forall time timestamp interval date
>           <a string literal with character set specification>
>           <a number> <a single-quoted SQL string>
> Line: 22
> Text: CASE  WHEN C.CUST_TYPE_NO  = 73 THEN 'CFI'
> 
> Abaixo o código:
> Grato pela ajuda.
> 
> create or replace procedure teste_leo is
> BEGIN
> DECLARE
> VL_SEQREG   NUMBER;
> W_DTDIA     DATE;
> VL_MESANT   NUMBER;
> VL_CNLOJ    NUMBER;
> CURSOR C_RM805L21 IS
> SELECT ANAREDAD
>   FROM (
>   SELECT DISTINCT
>        TO_CHAR(A.LOJCLI,'009') ||'   '||
>        RPAD(DECODE (A.TPDEV, 1,'AUTORIZACAO DE CREDITO', 2 , 'TROCA
> SIMPLES'),22) || ' ' ||
>        TO_CHAR(A.DTEMIS,'DD/MM/YYYY') || '  ' ||
>        RPAD(A.USERINC, 15) || '   ' ||
>        RPAD(UPPER(A.STATUS), 15)  || '' ||
>        RPAD(A.NROSEQ,6)|| '' ||
>        TO_CHAR(A.VALOR,'99999999999999D99')|| ' ' ||
>        A.NFISCAL || '-' || A.NFSER ||'      '||
>        --DECODE(
>        CASE  WHEN C.CUST_TYPE_NO  = 73 THEN 'CFI'
>                   WHEN LENGTH(D.CACGC)   = 14 THEN CASE
>                   WHEN E.NMNFS           > 0
>                    AND E.NMCUPFIS        = 0  THEN 'EMP'
>                   WHEN E.NMNFS           = 0
>                    AND E.NMCUPFIS        > 0  THEN 'CFI'
>                   WHEN LENGTH(D.CACGC)   = 11 THEN CASE
>                   WHEN E.NMNFS           > 0  OR
>                        E.NMCUPFIS        > 0  THEN 'CFD'
>                   WHEN LENGTH(D.CACGC)   = 11 THEN CASE
>                   WHEN E.NMNFS           > 0  OR
>                        E.NMCUPFIS        > 0
>                    AND C.CAJURFIS        = 'J' THEN 'PJ'
> 
> END
>                                                  END
>                                                  END
>                     ELSE 'XXX'
>              END--, 'CFI','MAKRO', 'EMP', 'EMPRESA', 'CFD', 'MAKRO', 'PJ',
> 'CLIENTE',  'XXX', 'MAKRO')
>              || '    ' ||
>        TO_CHAR(B.DTEMINFS,'DD/MM/YYYY')|| ' ' ||
>        DECODE(
>        CASE  WHEN C.CUST_TYPE_NO  = 73 THEN 'CFI'
>                   WHEN LENGTH(D.CACGC) = 14 THEN CASE
>                   WHEN E.NMNFS         > 0
>                    AND E.NMCUPFIS      = 0  THEN 'EMP'
>                   WHEN E.NMNFS         = 0
>                    AND E.NMCUPFIS      > 0  THEN 'CFI'
>                   WHEN LENGTH(D.CACGC) = 11 THEN CASE
>                   WHEN E.NMNFS         > 0  OR
>                        E.NMCUPFIS      > 0  THEN 'CFD'
> 
> END
>                                                  END
>                     ELSE 'XXX'
>              END
>              , 'CFI','INDETERMINADO', 'EMP', 'EMPRESA', 'CFD',
> 'DETERMINADO', 'XXX', '             ') || ' ' ||
>        TO_CHAR(A.CUSTCLI ,'0000009') || '      ' ||
>        B.NMNFS || '-' || B.CNSERNFS  || '       ' ||
>        A.NMCUPFIS ANAREDAD
>   FROM CUST_DEV_CHANGE A,
>        CECABNFS        B,
>        ACCLIPRI        C,
>        ACCLISEC        D,
>        HIST_INVOICE    E
>  WHERE A.NMSEQREG = B.NMSEQREG
>    AND A.CUSTCLI  = C.CUST_NO
>    AND C.CUST_NO  = D.CUST_NO
>    AND D.CUST_NO  = E.CUST_NO)
>    ORDER BY SUBSTR(ANAREDAD,23,2);
> 
> ---------------------------------------------------------------------------
> --PROCEDURE PROC_RM805L21 IS
> BEGIN
>    SELECT TO_NUMBER(TO_CHAR(TRUNC(NVL(B.DTDIA,SYSDATE),'MM')-3,'YYYYMM')),
>           A.STORE_NO,
>           NVL(B.DTDIA,SYSDATE)
>      INTO VL_MESANT,
>           VL_CNLOJ,
>           W_DTDIA
>      FROM STORE A,
>           GENVAR B;
>    VL_SEQREG := 0;
>    FOR REG IN C_RM805L21 LOOP
>       IF VL_SEQREG = 0 THEN
>          INSERT INTO RLINFCTL (ANREL,
>                                CNLOJ,
>                                DTGERREL,
>                                SQDETREL,
>                                ANAREDAD)
>                      VALUES ( 'RM805L21',0,TRUNC(W_DTDIA),0,
>                               'LOJA  OPERACAO               REALIZACAO
> RESPONSAVEL       STATUS         FORMULARIO        VALOR  NOTA_FISCAL
> EMISSOR  COMPRA     CONSUMIDOR    PASSAPORTE NOTA_FISCAL  CUPOM_FISCAL'
>                           );
>        END IF;
>        VL_SEQREG := VL_SEQREG + 1;
>        INSERT INTO RLINFCTL( ANREL
>                            , CNLOJ
>                            , DTGERREL
>                            , SQDETREL
>                            , ANAREDAD)
>                     VALUES ( 'RM805L21'
>                            , VL_CNLOJ
>                            , TRUNC(W_DTDIA)
>                            , VL_SEQREG
>                            , REG.ANAREDAD );
>    END LOOP;
>    COMMIT;
> END;
> 
> 
> [As partes desta mensagem que não continham texto foram removidas]
>


Responder a