Eu gostaria de executar um script Oracle através do SQL Plus por meio de um prompt de comando do Windows. O script não contém um comando "exit", mas eu ainda gostaria que o SQL Plus saísse, retornando o controle ao prompt de comando na conclusão do script. Meu objetivo é fazer isso sem modificar o script. Isso é possível?
114
Respostas:
Outra maneira é usar este comando no arquivo em lotes:
fonte
Eu achei que essa era a melhor solução e funciona em um terminal ou em um script:
fonte
Percebendo agora que seu problema pode estar no próprio arquivo sql, saiba que é necessário informar o sqlplus para sair. A maneira como faço isso é:
(A barra é importante. Diz ao sqlplus para executar o (s) statemet (s) acima dela.
fonte
A melhor maneira de ocultar informações e saídas do usuário é:
exit
é fornecido à saída do sqlplus, forçando-o a sair.-S
suprime toda a saída do servidor, exceto a consulta sql no script.fonte
Você também pode fazer isso no seu shell script.
Você pode precisar escapar do ";" com um \.
fonte
Sim, é possível - gerar um script que configura SQLPlus adequadamente, inclui o seu roteiro (ie.
@YourTargetScript.sql
), E em seguida faz uma saída.Dito isto, eu não recomendo esta abordagem - o SQLPlus possui muitas dicas para uso programático; ao escrever scripts de shell no passado que usavam o Oracle, criei um wrapper Python (adicionando um comportamento mais razoável de tratamento de erros, separação sã de saída entre stdout / stderr, suporte nativo à saída de CSV e outros itens) e funcionou muito melhor.
fonte
Como isso:
Se você colocar isso em um arquivo em lotes, o controle continuará com as instruções a seguir.
EDIT: Meu mal, tente novamente com / nolog sinalizador
fonte
Para aqueles preocupados com a segurança de incluir sua senha no script, o AskTom tem um artigo sobre "identificado externamente" http: //asktom.oracle.com/pls/apex/f? P = 100: 11: 0 :::: P11_QUESTION_ID: 142212348066
fonte
No seu script SQL, adicione EXIT. Aqui está o exemplo do meu arquivo test.bat:
usuário sqlplus / pwd @ server @ test.SQL> myLOG.LOG
meu arquivo test.sql possui o seguinte: select * from dual; Saída
fonte
sair | SQLPLUS / @ @
Esta é a solução correta, eu tentei está funcionando
fonte