別の.sqlファイルに含まれている基本的なSQLを実行するsqlplusを呼び出すDOSバッチファイルがあり、その最後の部分で値をdosバッチファイルに戻したいと考えています。ただし、Unixシェルを使用してこれを行う方法についてはGoogle経由で多くの例がありますが、DOSバッチファイルで最も近いのは次のようなものです。
SELECT
MAX(magicnumber)
INTO
:ret_val
FROM
ABCD.EFGH
exit :ret_val
ただし、これは私には機能しません-sqlplusはEXITの使用法メッセージを表示するだけです。
たとえば、「exit 15」を実行すると、DOSバッチファイルは(エラーレベルを使用して)リターンコードを正しく報告するため、その部分は問題ありません。
私が見逃している構文的なものはありますか?私はSQLに非常に慣れていないので、私が見ていない非常に明白なことかもしれません...ありがとう!
一種の回避策は、単に結果を出力してから、unixシェルと同じようにその出力をキャプチャすることです。 dbforums.comのユーザー「shoblock」は、次の例を示しています。
http://www.dbforums.com/Oracle/1034420-how-return-value-pl-sql-script.html
本質的に、batファイルには次のものがあります。
FOR /F "usebackq delims=!" %%i IN (`sqlplus -s u/p@db @t`) DO set xresult=%%i
echo %xresult%
今のところ私はこれで行きます。