Execute o script SQL do Oracle e saia do sqlplus.exe através do prompt de comando

103

Eu gostaria de executar um script Oracle através do SQL Plus através 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 para o prompt de comando ao concluir o script. Meu objetivo é fazer isso sem modificar o script. Isso é possível?

    
por JoshL 23.09.2008 / 01:33

10 respostas

129

Outra maneira é usar esse comando no arquivo em lotes:

echo exit | sqlplus user/pass@connect @scriptname
    
por 23.09.2008 / 14:28
12

Descobri que esta é a melhor solução e funciona em um terminal ou em um script:

echo @scriptname | sqlplus username/password@connect
    
por 26.10.2012 / 14:21
12

A melhor maneira de ocultar as informações e saídas do usuário é:

exit | sqlplus -S user/pwd@server @script.sql

exit é fornecido para a saída do sqlplus, forçando-o a sair. -S suprrespeita toda a saída do servidor, exceto a consulta sql no script.

    
por 18.03.2012 / 22:20
11

Percebendo agora que seu problema pode estar no próprio arquivo sql, perceba que o sqlplus precisa ser avisado para sair. A maneira que eu faço isso é:

select * from dual;

quit;
/

(A barra é importante. Ela diz ao sqlplus para executar o statemet (s) acima dele.)

    
por 23.09.2008 / 18:04
6

Você também pode fazer isso no seu script de shell.

sqlplus /nolog <<EOF
connect user/pass
@run_some_file.sql
select * from dual;
EOF

Você pode precisar escapar do ";" com um \.

    
por 23.09.2008 / 14:33
4

Assim:

sqlplus /nolog userid/password@tnsname @filename

Se você colocar isso em um arquivo de lote, o controle continuará com a (s) instrução (ões) que o segue.

EDIT: Meu erro, tente novamente com / nolog flag

    
por 23.09.2008 / 01:43
3

Sim, é possível - gerar um script de wrapper que configure o SQLPlus adequadamente, inclua seu script (ou seja, @YourTargetScript.sql ) e, em seguida, saia.

Dito isso, eu não recomendo essa abordagem - o SQLPlus tem muitas dicas para uso programático; ao escrever scripts shell no passado que usavam o Oracle, eu criei um wrapper do Python (adicionando um comportamento mais razoável de tratamento de erros, separação sadia de saída entre stdout / stderr, suporte de saída CSV nativo e outras coisas) e que funcionou muito melhor.

    
por 23.09.2008 / 01:40
1

Para aqueles preocupados com a segurança de incluir sua senha no script, a AskTom tem um artigo sobre "identificado externamente" link

    
por 16.07.2012 / 21:38
0

No seu script SQL, adicione EXIT. Aqui está um exemplo meu arquivo test.bat tem o seguinte:

usuário sqlplus / pwd @ server @ test.SQL > myLOG.LOG

meu arquivo test.sql tem o seguinte: selecione * do dual; sair

    
por 19.06.2009 / 22:40
0

sair | SQLPLUS / @ @

Esta é a solução correta, eu tentei está funcionando

    
por 20.11.2010 / 07:57