Olá Roberto, boa tarde! Obrigado pela ajuda, mas infelizmente não deu certo também...
Segue abaixo os erros informados pelo Oracle: Erros para PROCEDURE PRC_UPDT_ORDEM_CADASTRO_PROD: LINE/COL ERROR -------- ----------------------------------------------------------------- 15/1 PL/SQL: SQL Statement ignored 16/6 PL/SQL: ORA-00942: a tabela ou view não existe 24/4 PL/SQL: SQL Statement ignored 25/21 PL/SQL: ORA-00904: : identificador inválido 25/21 PLS-00364: o uso da variável 'VERIFICA_ORDEM' de índice de loop é inválido 34/4 PL/SQL: Statement ignored 34/14 PLS-00364: o uso da variável 'VERIFICA_ORDEM' de índice de loop é inválido Existe alguma sintaxe diferente para fazer um BEGIN dentro do outro, ou seja, para criação de sub-blocos? Seria esse o problema realmente? Vlw... Matheus Malta ----- Original Message ----- From: "Roberto Oshikawa" <rcoshik...@gmail.com> To: <oracle_br@yahoogrupos.com.br> Sent: Monday, November 09, 2009 4:54 PM Subject: Re: [oracle_br] Dúvida - Procedure o que está acontecendo é que a declaração do cursor tem que ficar antes do BEGIN, como nesse caso vc está criando dinamicamente entao o correto seria mudar a forma como vc utiliza o cursor de explicito para implicito, parece complicado mas é bem mais fácil, segue no seu exemplo mesmo. tenta ver dessa forma, vou ficar off por algum tempo, tenta assim se der algum erro manda pra mim novamente que tento te ajudar depois das 18:00hs, OK ? CREATE OR REPLACE PROCEDURE prc_updt_ordem_cadastro_prod IS v_linha number; v_com varchar2(1000); BEGIN v_com := 'CREATE TABLE t_ordem_cadastro as'|| 'SELECT rownum linha, product_id, nome '|| 'FROM products'; EXECUTE IMMEDIATE v_com; -- aqui fica o esquema do cursor implicito -- como o cursor não precisa ser declarado recebe esse nome implicito For verifica_ordem in (SELECT linha FROM t_ordem_cadastro FOR UPDATE) loop Begin UPDATE products SET product_id = v_linha WHERE CURRENT OF verifica_ordem; exception when orhers then dbms_output.put_line(sqlcode || '-' || sqlerrm ) end; EXIT WHEN verifica_ordem%NOTFOUND; END LOOP; COMMIT; END; end prc_updt_ordem_cadastro_prod / 2009/11/9 Matheus Malta <maltamath...@gmail.com> > > > Olá Roberto, obrigado por sua ajuda... > > Digitando o comando SHOW ERROR, corrigi alguns erros e a proc foi alterada, > porém, tah acusando ainda erro na linha de declaração do cursor: > > CURSOR verifica_ordem IS > > o erro acusado é: > > PLS-00103: Encontrado o símbolo "VERIFICA_ORDEM" quando um dos > seguintes símbolos era esperado: > := . ( @ % ; > > A proc foi refeita e ficou da seguinte forma: > > > CREATE OR REPLACE PROCEDURE prc_updt_ordem_cadastro_prod > IS > v_linha number; > v_com varchar2(1000); > > BEGIN > > v_com := 'CREATE TABLE t_ordem_cadastro as'|| > 'SELECT rownum linha, product_id, nome '|| > 'FROM products'; > > EXECUTE IMMEDIATE v_com; > > CURSOR verifica_ordem IS > > SELECT linha > FROM t_ordem_cadastro FOR UPDATE; > > BEGIN > > OPEN verifica_ordem; > > LOOP > > FETCH verifica_ordem into v_linha; > > EXIT WHEN verifica_ordem%NOTFOUND; > > > UPDATE products SET product_id = v_linha > WHERE CURRENT OF verifica_ordem; > > END LOOP; > > COMMIT; > > CLOSE verifica_ordem; > > END; > > END; > / > > O que poderá ser agora? > > Grato! > > Matheus Malta > > ----- Original Message ----- > From: "Roberto Oshikawa" <rcoshik...@gmail.com <rcoshikava%40gmail.com>> > To: <oracle_br@yahoogrupos.com.br <oracle_br%40yahoogrupos.com.br>> > Sent: Monday, November 09, 2009 4:14 PM > Subject: Re: [oracle_br] Dúvida - Procedure > > O oracle nao te mostra nenhuma mensagem de erro ? ou código do erro ? > > depois que vc compilar a proc digite > > show error > > 2009/11/9 Matheus Malta <maltamath...@gmail.com <maltamatheus%40gmail.com> > > > > > > > > > Galera... Seguinte... > > > > Tô tentando desenvolver uma procedure no ambiente do SQLPlus... Mas o > > problema é que, ao compilar, ela tah acusando erro de compilação... E não > > mostra o erro que está ocorrendo, apenas aponta a linha onde o erro está > > ocorrendo... > > > > Fiz alguns testes removendo a linha ou substituindo o comando, mesmo > assim, > > ainda não consegui proceder com a compilação... > > > > Alguém poderia me ajudar nesse aspecto? > > > > Segue abaixo a procedure: > > > > CREATE OR REPLACE PROCEDURE prc_updt_ordem_cadastro_prod > > IS > > v_linha number; > > v_com varchar2(1000); > > > > BEGIN > > > > v_com := 'CREATE TABLE t_ordem_cadastro as '|| > > 'SELECT rownum linha, product_id, nome '|| > > 'FROM products'; > > > > EXECUTE IMMEDIATTE v_com; > > > > CURSOR check_ordem IS > > SELECT linha > > FROM t_ordem_cadastro FOR UPDATE; > > > > BEGIN > > > > OPEN check_ordem; > > > > LOOP > > > > FETCH check_ordem into v_linha; > > > > EXIT WHEN check_ordem%NOTFOUND; > > > > UPDATE products SET product_id = v_linha > > WHERE CURRENT OF check_ordem; > > > > END LOOP; > > > > COMMIT; > > > > CLOSE check_ordem; > > > > END; > > > > END prc_updt_ordem_cadastro_prod; > > / > > > > [As partes desta mensagem que não continham texto foram removidas] > > > > > > > > [As partes desta mensagem que não continham texto foram removidas] > > ------------------------------------ > > > ---------------------------------------------------------- > >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de > inteira responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > ---------------------------------------------------------- > >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure > » Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: > http://www.oraclebr.com.br/ > ---------------------------------------------------------- Links do Yahoo! > Grupos > > > [As partes desta mensagem que não continham texto foram removidas] > > > [As partes desta mensagem que não continham texto foram removidas] ------------------------------------ -------------------------------------------------------------------------------------------------------------------------- >Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira >responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ -------------------------------------------------------------------------------------------------------------------------- >Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » >Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: >http://www.oraclebr.com.br/ ------------------------------------------------------------------------------------------------------------------------ Links do Yahoo! Grupos [As partes desta mensagem que não continham texto foram removidas]