Execute Immediate

Scripts Diversos para o Oracle SQL*Plus. (Relacionado a ferramenta Oracle SQL*Plus, para questões de SQL, usar o forum SQL)
Responder
vem_Castro
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 31 Mar 2008 6:05 am
Localização: Espinho

bom dia..

gostava de saber se consigo fazer um execute immediate AAA, onde a expressão AAA terá no seu conteudo um execute immediate?
ou seja na prática, um execute immediate dentro de outro execute immediate, é possivel fazer isto?

cumprientos
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Seguem alguns exemplos de EXECUTE IMMEDIATE:

Selecionar tudo

BEGIN
  EXECUTE IMMEDIATE(' declare 
                         v_valor number := 0;
		                    begin 
		                     select 1
																							  into v_valor
																								 from dual;
																					end;					');

END;


-- OU

BEGIN
 EXECUTE IMMEDIATE ('ALTER SESSION SET NLS_NUMERIC_CHARACTERS='',.''');
END;

qualquer coisa, manda ai.
vem_Castro
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Seg, 31 Mar 2008 6:05 am
Localização: Espinho

agradeço a ajuda...

o que queria fazer era mais do tipo, construir um varchar que já tinha um execute immediate e depois ai executar esse execute immediate, do genero:

Selecionar tudo

declare
vresult varchar2(500);
tst varchar2(250);
tst1 varchar2(250);
tst0 varchar2(250);
begin
tst0 := 'execute immediate ';
tst := 'Begin rotinas_teste.multiplica(5, 4, :outResult); end;';
tst1 := tst0 || ''''|| tst|| '''' || ' using out vresult;';
execute immediate tst1;
end;
alexandre5150
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Sex, 13 Jun 2008 9:53 am
Localização: NOVO HAMBURGO - RS
Alexandre Reis
Desenvolvedor Oracle

Sim, você pode fazer um execute immediate dentro de outro.
Segue exemplo:

Selecionar tudo

declare 
  --
  vl_comando   varchar2(2000);
  vl_data      date;
  --
begin
  --
  vl_comando := 
'
declare
  vl_string  varchar2(4000);
begin
  vl_string  := ''begin select sysdate into :vb_sysdate from dual; end;'';
  execute immediate vl_string using out :vb_variavel_bind;
end;
';
  execute immediate vl_comando using out vl_data;
  --
  dbms_output.put_line('vl_data -> ' || vl_data);
  --
end;
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 20 visitantes