web-dev-qa-db-ja.com

SQL、pl / sql、sqlplus:変数をDOSバッチファイルに返す方法は?

別の.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に非常に慣れていないので、私が見ていない非常に明白なことかもしれません...ありがとう!

2
weiji

一種の回避策は、単に結果を出力してから、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%

今のところ私はこれで行きます。

0
weiji