Pular para o conteúdo
Visualizando 3 posts - 1 até 3 (de 3 do total)
  • Autor
    Posts
  • #98981
    leogazio
    Participante

      Olá Pessoal, não tenho muita experiência em procedures no Oracle, estou tentando criar esse procedure;

      CREATE OR REPLACE PROCEDURE PRC_LANCACONTASAUTOMATICAS IS
      VPROXIMOMES CHAR(7);
      VDATAVENCIMENTO DATE;
      VNUMDOC INTEGER;
      BEGIN
      /* SQL QUE VAI LANCAR AS CONTAS DE LANCAMENTO AUTOMATICO
      CRIADAS NO PLANO DE CONTAS */
      SELECT TO_CHAR(ADD_MONTHS(SYSDATE, 1), 'MM/YYYY') INTO VPROXIMOMES FROM DUAL;

      FOR R IN (SELECT CODPLANOCONTAPAGAR, DESCRICAO, CONTAPERSISTENTE, DIAVENCIMENTO,
      NUMDIASANTECEDENCIA, STATUS, VALORCONTAPERSISTENTE
      FROM TBPLANOCONTASPAGAR WHERE ((TO_DATE(DIAVENCIMENTO||'/'||VPROXIMOMES) - SYSDATE) <= NUMDIASANTECEDENCIA) AND (CONTAPERSISTENTE = 1) AND (ROWNUM < NUM_ROWS+1)) LOOP VDATAVENCIMENTO := TO_DATE(DIAVENCIMENTO||'/'||VPROXIMOMES); VNUMDOC := (SELECT (MAX(NUMDOC) + 1) FROM TBCONTASPAGAR WHERE CODPLANOCONTAPAGAR = R.CODPLANOCONTAPAGAR); INSERT INTO TBCONTASPAGAR (CODPLANOCONTAPAGAR, DATAVENCIMENTO, DATALANCAMENTO, DATAEMISSAO, VALOR, NUMDOC, DESCRICAO) VALUES (R.CODPLANOCONTAPAGAR, VDATAVENCIMENTO, R.DATALANCAMENTO, SYSDATE, R.VALORCONTAPERSISTENTE, VNUMDOC, R.DESCRICAO); END LOOP; END PRC_LANCACONTASAUTOMATICAS; /

      Mas tá dando o seguinte erro ao tentar compilar;

      PROCEDURE MHI_CONTROLEGERENCIAL.PRC_LANCACONTASAUTOMATICAS
      On line: 16
      PLS-00103: Encontrado o símbolo "SELECT" quando um dos seguintes símbolos era esperado:

      ( - + case mod new not null others

      avg count current exists max min
      prior sql stddev sum variance execute forall merge time
      timestamp interval date

      pipe

      Onde eu estou errando? Valeu galera, desde já qualquer ajuda será bemvinda,
      []'s.

      #98982
      Ishii
      Participante

        Olá,

        A variável VNUMDOC deve ser preenchida do mesmo jeito que a VPROXIMOMES

        SELECT (MAX(NUMDOC) + 1) into VNUMDOC FROM TBCONTASPAGAR WHERE CODPLANOCONTAPAGAR = R.CODPLANOCONTAPAGAR);

        Tente essa alteração e teste novamente…

        []s Ishii

        #98987
        vieri
        Participante

          VNUMDOC := (SELECT (MAX(NUMDOC) + 1) FROM TBCONTASPAGAR WHERE CODPLANOCONTAPAGAR = R.CODPLANOCONTAPAGAR);

          isso deve ser sintaxe de outro Banco de dados…

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