Re: [oracle_br] execute immediate
Tire o Ponto e Virgula no final da instrução . Ao inves disso GROUP BY c.qdra_id, i.imov_idcategoriaprincipal );'); Faça GROUP BY c.qdra_id, i.imov_idcategoriaprincipal )'); Alessandro Lúcio Cordeiro da Silva Analista de Sistema þ http://alecordeirosilva.blogspot.com/ O tic-tac do relógio me lembra de algo muito importante que esta acontecendo: estamos vivos. "Joana de Souza Schmitz Croxato" De: raffaell.ti77 Para: oracle_br@yahoogrupos.com.br Enviadas: Quinta-feira, 12 de Julho de 2012 8:10 Assunto: [oracle_br] execute immediate Pessoal, bom tarde. Estou tendo um problema com um execute immediate dentro um SP. EU tenho um create table que executando apenas ela por fora, ela é criada sem problema algum, mas quando coloco dentro do execute immediate me dá um erro na hora de executar a procedure. Segue o exemplo: CREATE OR REPLACE PROCEDURE teste_immediate IS BEGIN EXECUTE IMMEDIATE('CREATE TABLE QUADRA_TEMP AS (select c.qdra_id qdra_id, i.imov_idcategoriaprincipal catg_id, count(distinct c.imov_id) quantidade from faturamento.conta c inner join cadastro.imovel i on i.imov_id = c.imov_id inner join cadastro.sistema_parametros sp on 1=1 where((c.cnta_amreferenciacontabil <= (CASE WHEN (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = ''01'') THEN to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), 1, 4)) - 1)) || ''12'')) ELSE sp.parm_amreferenciafaturamento - 1 END) and c.dcst_idatual in ( 0,1,2) ) or ( c.cnta_amreferenciacontabil > (CASE WHEN (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = ''01'') THEN to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), 1, 4)) - 1)) || ''12'')) ELSE sp.parm_amreferenciafaturamento - 1 END) and c.dcst_idatual in (3,4,5,8) ) and ( c.dcst_idanterior is null or ( c.cnta_amreferenciaconta <= (CASE WHEN (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = ''01'') THEN to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), 1, 4)) - 1)) || ''12'')) ELSE sp.parm_amreferenciafaturamento - 1 END) and c.dcst_idanterior not in (1,2) ))) GROUP BY c.qdra_id, i.imov_idcategoriaprincipal );'); END; O erro gerado é o seguinte: ORA-00911: caractere inválido ORA-06512: em "TESTE_IMMEDIATE", line 3 ORA-06512: em line 2 Eu acho que o problema está no caracter com duas aspas simples, exemplo: ''12''. Como faço para resolver esse probleminha, alguém tem uma sugestão? [As partes desta mensagem que não continham texto foram removidas]
Re: [oracle_br] execute immediate
Uma sugestão é criar uma VIEW deste select, e daí criar a tabela com "select * from view". 2012/7/12 raffaell.ti77 > ** > > > Pessoal, bom tarde. > > Estou tendo um problema com um execute immediate dentro um SP. > EU tenho um create table que executando apenas ela por fora, ela é criada > sem problema algum, mas quando coloco dentro do execute immediate me dá um > erro na hora de executar a procedure. Segue o exemplo: > > CREATE OR REPLACE PROCEDURE teste_immediate IS > BEGIN > EXECUTE IMMEDIATE('CREATE TABLE QUADRA_TEMP AS (select c.qdra_id qdra_id, > i.imov_idcategoriaprincipal catg_id, count(distinct c.imov_id) quantidade > from faturamento.conta c > inner join cadastro.imovel i > on i.imov_id = c.imov_id > inner join cadastro.sistema_parametros sp > on 1=1 > where((c.cnta_amreferenciacontabil <= > (CASE WHEN (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = > ''01'') THEN > to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), > 1, 4)) - 1)) || ''12'')) > ELSE sp.parm_amreferenciafaturamento - 1 END) > and c.dcst_idatual in ( 0,1,2) ) > or ( c.cnta_amreferenciacontabil > > (CASE WHEN (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = > ''01'') THEN > to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), > 1, 4)) - 1)) || ''12'')) > ELSE sp.parm_amreferenciafaturamento - 1 END) and c.dcst_idatual in > (3,4,5,8) ) > and ( c.dcst_idanterior is null > or ( c.cnta_amreferenciaconta <= (CASE WHEN > (substr(to_char(sp.parm_amreferenciafaturamento), 5, 2) = ''01'') THEN > to_number((to_char((to_number(substr(to_char(sp.parm_amreferenciafaturamento), > 1, 4)) - 1)) || ''12'')) ELSE sp.parm_amreferenciafaturamento - 1 END) and > c.dcst_idanterior not in (1,2) ))) > GROUP BY c.qdra_id, i.imov_idcategoriaprincipal );'); > > END; > > O erro gerado é o seguinte: > > ORA-00911: caractere inválido > ORA-06512: em "TESTE_IMMEDIATE", line 3 > ORA-06512: em line 2 > > Eu acho que o problema está no caracter com duas aspas simples, exemplo: > ''12''. > > Como faço para resolver esse probleminha, alguém tem uma sugestão? > > > -- Att, [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 <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: oracle_br-unsubscr...@yahoogrupos.com.br <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
RE: [oracle_br] Execute Immediate
Meus palpites: 1- Problema com Grant 2- Falou ";" no final [[]]'s -Original Message- From: oracle_br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] On Behalf Of Alexandre Rocha Placido Sent: Thursday, October 26, 2006 3:11 PM To: oracle_br@yahoogrupos.com.br; [EMAIL PROTECTED] com. br Subject: [oracle_br] Execute Immediate Alguém pode me dizer por que a linha de comando abaixo funciona tranquilamente no sqlplus e não funciona de dentro duma package quando é chamada via Execute Immediate ou pelo Sys.Dbms_Sql.Parse? AGROVALE.AGR_SCHEMAS_PACK.Get_pk_conteudo('AAAlXwAAoAAAC7KAAA') Alexandre Rocha Placido Divisão de Tecnologia da Informação - Agrovale Fone: +55 74 3612-2900 +55 87 8802-0474 MSN[EMAIL PROTECTED] "Eis a voz do que clama: Preparai no deserto o caminho do Senhor; endireitai no ermo uma estrada para o nosso Deus. Todo vale será levantado, e será abatido todo monte e todo outeiro; e o terreno acidentado será nivelado, e o que é escabroso, aplanado. A glória do Senhor se revelará; e toda a carne juntamente a verá; pois a boca do Senhor o disse." Isaías 40:3-5 [As partes desta mensagem que não continham texto foram removidas] [As partes desta mensagem que não continham texto foram removidas] Vem aí: ENPO-BR 2006 - Encontro Nacional de Profissionais Oracle VISITE: http://www.enpo-br.org/ - Dia 11/11 "Vagas Limitadas" Este Grupo recebe o apoio da SQL Magazine - www.devmedia.com.br/sqlmagazine -- 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/ -- O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: http://www.oraclebr.com.br/ Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] Execute Immediate
declare l_stmt long; begin for x in ( select view_name from user_views ) loop l_stmt := 'execute create_xml('''||x.view_name||''', ''select * from '|| x.view_name||''');'; dbms_output.put_line( l_stmt ); -- execute immediate l_stmt; end loop; end; / [EMAIL PROTECTED]> create or replace view ADM_DATAFILES_1 2 as select null x from dual; View created. [EMAIL PROTECTED]> [EMAIL PROTECTED]> declare 2l_stmt long; 3 begin 4for x in ( select view_name from user_views ) 5loop 6l_stmt := 'execute create_xml('''||x.view_name||''', ''select * from '|| x.view_name||''');'; 7dbms_output.put_line( l_stmt ); 8-- execute immediate l_stmt; 9end loop; 10 end; 11 / execute create_xml('ADM_DATAFILES_1', 'select * from ADM_DATAFILES_1'); PL/SQL procedure successfully completed. thiagomz wrote: > Pessoal, > > Alguem pode acertar ese execute immediate ... nao to conseguindo... meu > dbms_output.putline traz o que eu quero... mas no imediate da erro nas > aspas :-( > > begin > for reg in ( select view_name > from user_views ) > loop > --execute immediate 'execute create_xml ('''||reg.view_name ||''', > ''select * from '|| reg.view_name ||''');'; >dbms_output.put_line('execute create_xml ('''||reg.view_name ||''', > ''select * from '|| reg.view_name ||''');'); > end loop; > end; > > A saida tem que ficar assim > > execute create_xml ('ADM_DATAFILES_1', 'select * from ADM_DATAFILES_1'); > > Valeu > -- Marcio Portes http://mportes.blogspot.com -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] EXECUTE IMMEDIATE
Olá! Sim, é isso mesmo que estou esperando. Já deu um DBMS_OUTPUT.PUT_LINE do valor da função Grato. Pedro Saraiva. --- Marcio Portes <[EMAIL PROTECTED]> escreveu: > dbms_output.put_line( v_chama_fun ); > > Veja se é isso mesmo que voce está esperando no > comando. > > > > > pnsaraiva wrote: > > Olá! > > > >Alguém já fez alguma coisa do tipo: > > > > Declare > > tDate date; > > i_Mona varchar2(20) := 'Chassi'; > > i_Calid varchar2(3) := 'O1'; > > v_chama_fun varchar2(2000) := null; > > Begin > > v_chama_fun := 'tDate := wcal400_'||i_Mona|| > > > '.rel2abs('||||i_Calid||||','||4545||');'; > > EXECUTE IMMEDIATE 'tDate := '||v_chama_fun; > > EXCEPTION > > WHEN OTHERS THEN > > dbms_output.put_line ('SQLERRM => > '||SUBSTR(SQLERRM,1,200)); > > END; > > > > Isso tudo acima está me dando o seguinte Erro: > ORA-00900: invalid > > SQL statement. > > > > Alguém tem alguma sugestão pra mi dar > > > > Grato. > > > >Pedro Saraiva. > >[EMAIL PROTECTED] > > > > > > > > > > > > > -- > > Atenção! As mensagens deste grupo são de acesso > público e de inteira responsabilidade de seus > remetentes. > > Acesse: > http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > > > > --_ > > Area de download do grupo - > http://www.4shared.com/dir/101727/a4dcc423 > > Links do Yahoo! Grupos > > > > > > > > > > > > > > > > > > -- > Marcio Portes > http://mportes.blogspot.com > ___ Yahoo! Acesso Grátis: Internet rápida e grátis. Instale o discador agora! http://br.acesso.yahoo.com/ -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html
Re: [oracle_br] EXECUTE IMMEDIATE
dbms_output.put_line( v_chama_fun ); Veja se é isso mesmo que voce está esperando no comando. pnsaraiva wrote: > Olá! > >Alguém já fez alguma coisa do tipo: > > Declare > tDate date; > i_Mona varchar2(20) := 'Chassi'; > i_Calid varchar2(3) := 'O1'; > v_chama_fun varchar2(2000) := null; > Begin > v_chama_fun := 'tDate := wcal400_'||i_Mona|| >'.rel2abs('||||i_Calid||||','||4545||');'; > EXECUTE IMMEDIATE 'tDate := '||v_chama_fun; > EXCEPTION > WHEN OTHERS THEN > dbms_output.put_line ('SQLERRM => '||SUBSTR(SQLERRM,1,200)); > END; > > Isso tudo acima está me dando o seguinte Erro: ORA-00900: invalid > SQL statement. > > Alguém tem alguma sugestão pra mi dar > > Grato. > >Pedro Saraiva. >[EMAIL PROTECTED] > > > > > > -- > Atenção! As mensagens deste grupo são de acesso público e de inteira > responsabilidade de seus remetentes. > Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ > --_ > Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 > Links do Yahoo! Grupos > > > > > > > > -- Marcio Portes http://mportes.blogspot.com -- Atenção! As mensagens deste grupo são de acesso público e de inteira responsabilidade de seus remetentes. Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ --_ Area de download do grupo - http://www.4shared.com/dir/101727/a4dcc423 Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/oracle_br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html