› Fóruns › SQL e PL/SQL › Procedure. Onde estou errando?
- Este tópico contém 2 respostas, 3 vozes e foi atualizado pela última vez 15 anos, 1 mês atrás por
vieri.
-
AutorPosts
-
27 de abril de 2011 às 3:04 am #98981
leogazio
ParticipanteOlá 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.27 de abril de 2011 às 4:12 am #98982Ishii
ParticipanteOlá,
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
27 de abril de 2011 às 5:59 pm #98987vieri
ParticipanteVNUMDOC := (SELECT (MAX(NUMDOC) + 1) FROM TBCONTASPAGAR WHERE CODPLANOCONTAPAGAR = R.CODPLANOCONTAPAGAR);
isso deve ser sintaxe de outro Banco de dados…
-
AutorPosts
- Você deve fazer login para responder a este tópico.
› Fóruns › SQL e PL/SQL › Procedure. Onde estou errando?