web-dev-qa-db-ja.com

SQLPLUSを使用してコマンドラインでPL / SQLスクリプトに引数を渡すにはどうすればよいですか?

SQLPLUSを使用してコマンドラインでPL/SQLスクリプトに引数を渡すにはどうすればよいですか?そのようにPL/SQLスクリプトを呼び出すことができますが、スクリプトが成功するためには引数が必要です。スクリプトに引数を渡すことができるように、sqlplus.exeを実行するにはどうすればよいですか?

@ECHO off
// where Host030 is a tnsnames alias to a machine, port, and instance    
sqlplus.exe MYUSER/mypassword@Host030 < refreshDataOnOracle.sql    
pause

答えを探してみましたが、SQLPLUSの「引数の例」が見つかりませんでした。 SQL * Plusの「START」コマンドを使用する同様の方法だと思われますか?

28
djangofan

まず、次のようにスクリプトを呼び出す必要があります。

sqlplus.exe MYUSER/mypassword@Host030 @refreshDataOnOracle.sql foo bar  

OSリダイレクトの代わりに、「@」記号を使用して、実行するファイル名を示します。また、コマンドラインでスクリプトパラメータを指定します。スクリプトでは、&1&2などを使用してパラメーターを参照します。

update mytable set mycol = '&2' where myid = '&1';

に変換されます

update mytable set mycol = 'bar' where myid = 'foo';
43
mustaccio

Sqlplusの実行を記録する場合は、次の構文を使用できます。

sqlplus.exe MYUSER/mypassword@Host030 @refreshDataOnOracle.sql foo bar  >> log.log
2
PolyMorph