回答:
別の方法は、バッチファイルでこのコマンドを使用することです。
echo exit | sqlplus user/pass@connect @scriptname
私はこれが最善の解決策であることがわかり、端末またはスクリプト内で動作します:
echo @scriptname | sqlplus username/password@connect
問題がsqlファイル自体にある可能性があることに気付いたら、sqlplusに終了するよう指示する必要があることを理解してください。私がこれを行う方法は次のとおりです。
デュアルから*を選択します。 終了する; /
(スラッシュは重要です。これは、sqlplusにその上のstatemet(s)を実行するように指示します。)
ユーザー情報と終了を非表示にする最良の方法は次のとおりです。
exit | sqlplus -S user/pwd@server @script.sql
exit
sqlplusの出力に提供され、強制的に終了します。-S
スクリプト内のsqlクエリ以外のすべてのサーバー出力を抑制します。
はい、可能です-SQLPlusを適切にセットアップし、スクリプト(つまり@YourTargetScript.sql
)を含めてから終了するラッパースクリプトを生成します。
とはいえ、このアプローチはまったくお勧めしません。SQLPlusには、プログラムで使用するための非常に多くの落とし穴があります。過去にOracleを使用したシェルスクリプトを作成するときに、Pythonラッパーを構築しました(より合理的なエラー処理動作、stdout / stderr間の出力の健全な分離、ネイティブCSV出力サポート、およびその他のそのような機能を追加)。ずっといい。
このような:
sqlplus / nolog userid / password @ tnsname @filename
これをバッチファイルに入れた場合、制御は後続のステートメントで続行されます。
編集:私の悪い、/ nologフラグで再試行してください
スクリプトにパスワードを含めることのセキュリティが心配な方のために、AskTomには「外部で識別される」http://asktom.oracle.com/pls/apex/f?p = 100:11:0 ::::に関する記事があり ます。 P11_QUESTION_ID:142212348066
SQLスクリプトにEXITを追加します。test.batファイルの例を次に示します。
sqlplus user / pwd @ server @ test.SQL> myLOG.LOG
私のtest.sqlファイルには次のものがあります:select * from dual; 出口
出口| SQLPLUS / @ @
これは正しい解決策です、私はそれが働いていることを試しました