O decode está comentado.
De: oracle_br@yahoogrupos.com.br [mailto:oracle_br@yahoogrupos.com.br] Em nome de Leonardo Silva Enviada em: Wednesday, 18 de April de 2012 11:18 Para: oracle_br@yahoogrupos.com.br Assunto: [oracle_br] Erro ao compilar procedure no Oracle 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] [As partes desta mensagem que não continham texto foram removidas]