Fórum Sql Dinâmico #28033
10/12/2004
0
Estou tentando fazer a função abaixo:
create or replace function DoSQL(sSQL varchar2) return varchar2 is begin execute immediate sSQL; return ´OK´; end;
Mas me retorna o erro [color=blue:c4c3ba9cd6]ORA-14552: não é possível executar um DDL, commit ou rollback dentro de uma consulta ou de um DML[/color:c4c3ba9cd6]. Chamo a função da seguinte forma: [color=darkred:c4c3ba9cd6]Select DoSQL(´COMMIT´) FROM DUAL[/color:c4c3ba9cd6].
PS.: Tem que ser uma função. Em Procedure funciona, desde que uma não seja chamada por uma Function.
:arrow: [color=blue:c4c3ba9cd6]Título alterado pelo Moderador oTTo.[/color:c4c3ba9cd6]
Rodc
Curtir tópico
+ 0Posts
10/12/2004
Motta
tente
em plsql
declare
...
begin
DoSQL(´COMMIT´);
end;
acho que vai funcionar, mas que passar um commit via uma functios que executa um sql ?!
Gostei + 0
10/12/2004
Rodc
Mas o Oracle não me deixa fazer o update dinâmico se o código está dentro de uma função.
Talvêz exista outras formas de fazer SQL dinâmico. Tentei o EXECSQL mas o oracle fala que não existe esta função.
Agradeço se puder me ajudar.
Rodrigo Cesar
Gostei + 0
10/12/2004
Gandalf.nho
Título do tópico em maiúsculas
Para maiores esclarecimentos pode mandar-me uma [url=http://delphiforum.icft.com.br/forum/privmsg.php?mode=post&u=8378]Mensagem Particular[/url].
Gostei + 0
10/12/2004
Motta
Deixa, o que ele não permite e chamar uma function que atualize via um select, chamando fora de um select não há problema.
No Delphi por exemplo use uma TStoredProc.
Gostei + 0
10/12/2004
Rodc
Gostei + 0
10/12/2004
Gandalf.nho
Sim
Gostei + 0
10/06/2005
Avmsistemas
Select <NOME_DA_FUNCAO> FROM DUAL
Gostei + 0
13/06/2005
Motta
Sim , num parametro de output
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)