A 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