web-dev-qa-db-ja.com

Oracle SQLスクリプトを実行し、コマンドプロンプトからsqlplus.exeを終了します。

WindowsコマンドプロンプトからSQL Plusを介してOracleスクリプトを実行したいと思います。スクリプトには「exit」コマンドが含まれていませんが、SQL Plusを終了して、スクリプトの完了時にコマンドプロンプトに制御を戻したいと思います。私の目標は、これを行うことですなしスクリプトを変更します。これは可能ですか?

118
JoshL

別の方法は、バッチファイルでこのコマンドを使用することです。

echo exit | sqlplus user/pass@connect @scriptname
147
Dave Costa

これが最良の解決策であることがわかり、ターミナルまたはスクリプト内で機能します。

echo @scriptname | sqlplus username/password@connect
15
user142847

問題がsqlファイル自体にある可能性があることに気づいたら、sqlplusを終了するように指示する必要があることを認識してください。これを行う方法は次のとおりです。

 select * from dual; 
 
 quit; 
/

(スラッシュは重要です。これは、sqlplusにその上のステートメットを実行するように指示します。)

13
Chris Noe

ユーザー情報を閉じて終了する最良の方法は次のとおりです。

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

exitは、sqlplusの出力に提供され、強制的に終了します。 -Sスクリプト内のSQLクエリ以外のすべてのサーバー出力をサポートします。

13
girish

シェルスクリプトでこれを行うこともできます。

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

「;」をエスケープする必要があるかもしれません。とともに \。

6
Ethan Post

はい、それは可能です-SQLPlusを適切に設定するラッパースクリプトを生成し、スクリプトを含めます(つまり、@YourTargetScript.sql)、次に終了します。

とは言っても、このアプローチはまったくお勧めしません。SQLPlusには、プログラムで使用するための多くの落とし穴があります。過去にOracleを使用するシェルスクリプトを作成するときに、Pythonラッパーを構築しました(より適切なエラー処理動作、stdout/stderr間の出力の正しい分離、ネイティブCSV出力サポート、と他のそのような良いもの)、そしてそれははるかによく働いた。

3
Charles Duffy

このような:

sqlplus/nolog userid/password @ tnsname @filename

これをバッチファイルに入れると、制御はそれに続くステートメントで続行されます。

編集:私の悪い、/ nologフラグでもう一度試してください

3
Chris Noe

スクリプトにパスワードを含めることのセキュリティが心配な方のために、AskTomは「外部で識別される」についての記事 http://asktom.Oracle.com/pls/apex/f?p=100:11:0 :::: P11_QUESTION_ID:142212348066

1
user128494

SQLスクリプトにEXITを追加します。これが私のtest.batファイルの例です:

sqlplus user/pwd @ server @ test.SQL> myLOG.LOG

私のtest.sqlファイルは次のとおりです。出口

0
Ameen

終了| SQLPLUS/@ @

これは正しい解決策です、私はそれが働いていることを試しました

0
user60947