Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

execute o script Oracle sql a partir de java


Tive o mesmo problema não muito tempo atrás, esbarrei na sua pergunta várias vezes enquanto procurava uma solução no Google, então acho que devo a você - aqui estão minhas descobertas até agora:

Em resumo, não há soluções prontas para isso:se você abrir Ant ou Maven source, você verá que eles estão usando um divisor de script simples baseado em regexp que é bom para scripts simples, mas geralmente falha em, por exemplo, procedimentos armazenados. Mesma história com iBATIS, migrações de banco de dados c5, etc.

O problema é que há mais de uma linguagem envolvida:para executar "Scripts SQL" é preciso ser capaz de lidar com (1) comandos SQL, (2) PL/SQL e (3) sqlplus.

Executando sqlplus em si é o caminho de fato, mas cria confusão na configuração, então tentamos evitar essa opção.

Existem analisadores ANTLR para PL/SQL, como o de Alexandre Porcelli — esses são muito próximos, mas ninguém preparou uma solução drop-in completa com base neles até agora.

Acabamos escrevendo mais um divisor ad hoc que está ciente de alguns comandos sqlplus como / e EXIT — ainda é feio, mas funciona para a maioria dos nossos scripts. (Observe que alguns scripts, por exemplo, com -- à direita comentários, não vai funcionar - ainda é uma gambiarra, não uma solução.)