- Este tópico contém 5 respostas, 3 vozes e foi atualizado pela última vez 9 anos, 8 meses atrás por
José Laurindo Chiappa.
-
AutorPosts
-
1 de julho de 2016 às 4:56 pm #108242
Tadeu Rodrigues de Oliveira
ParticipantePessoal no SQL Server existe uma proc chamada sp_executesql que executa qualquer comando sql exemplo:
sp_executesql ‘select * from tabela;’;
No ORACLE existe uma procedure ou função compatível?
Obrigado,
Tadeu.
1 de julho de 2016 às 5:21 pm #108243spernega
ParticipanteBom dia,
Você pode usar o EXECUTE IMMEDIATE ‘UPDATE employees_temp SET commission_pct = :x’
1 de julho de 2016 às 5:22 pm #108244spernega
Participanteo bbCode foi sem querer…
1 de julho de 2016 às 5:49 pm #108245Tadeu Rodrigues de Oliveira
ParticipanteCara o execute immediate não funciona para este fim já testei isso inclusive em outro poste que você mesmo tentou me ajudar mas de qualquer forma obrigado.
1 de julho de 2016 às 8:35 pm #108247spernega
ParticipanteOk,
Na próxima eu tento de novo…
Se você quiser especificar mais o que você esta tentando fazer, pode surgir mais alguma ideia.
7 de julho de 2016 às 3:04 am #108275José Laurindo Chiappa
ModeradorA resposta é ** ultra-simples ** : 100% compatível, que funcione IGUALZINHO, com a mesma Exata sintaxe e parâmetros, implementada Igualzinho, é ULULANTEMENTE ÓBVIO que não tem – diferentes fornecedores implementas recursos de maneira Absolutamente Diferente…
Então vc vai ter que estudar e aprender como se faz SQL dinâmico no Oracle, e não tentar adaptar o conhecimento de SQL dinâmico que vc tem do SQL Server, okdoc ?? No caso do RDBMS Oracle, pra ter SQL dinâmico vc pode :a) colocar no seu programa um EXECUTE IMMEDIATE ‘stringcomoSQLaexecutar’ (ou ter a string numa variável e passar a variável como argumento pro EXECUTE IMMEDIATE) , http://www.databasejournal.com/features/oracle/article.php/2109681/EXECUTE-IMMEDIATE-option-for-Dynamic-SQL-and-PLSQL.htm tem uns exemplos… Isso ** FUNCIONA SIM ** se vc usar corretamente…
OU
b) usa a PACKAGE (** não é uma única função restrita, é uma BIBLIOTECA de funções com tudo que vc precisa pra SQL dinãmico) chamada DBMS_SQL : http://www.orafaq.com/wiki/Dynamic_SQL tem alguns exemplos
OU
c) passa uma string SQL pra uma variável do tipo CURSOR, http://www.oracle.com/technetwork/issue-archive/2009/09-jul/o49asktom-090487.html um exemplo
Qual vc usa ? DPENDE da sua necessidade : para necessidades simples, como DDLs, queries simples que não retornam múltiplos valores e coisas assim eu vou pro EXECUTE IMMEDIATE, para situações onde vc tem uma Rotina sua (uma procedure, talvez) que vai retornar um RESULTSET eu optaria pelo REF CURSOR, reservando o DBMS_SQL para situações mais complexas, onde eu preciso ter controle de quantos PARSES vão ser feitos, posso re-executar o mesmo SQL múltiplas vezes, preciso usar BIND VALUES para array processing, etc….
[]s
Chiappa
-
AutorPosts
- Você deve fazer login para responder a este tópico.