Oracle

SQL、pl/sql、sqlplus:如何將變數返回到 DOS 批處理文件?

  • July 13, 2010

我有一個呼叫 sqlplus 的 DOS 批處理文件,該文件執行另一個 .sql 文件中包含的一些基本 SQL,我希望它的最後一部分將一個值返回給 dos 批處理文件。然而,雖然Google有很多關於如何使用 Unix shell 來做到這一點的例子,但我得到的最接近的 DOS 批處理文件是這樣的:

SELECT
 MAX(magicnumber)
INTO
 :ret_val
FROM
 ABCD.EFGH

exit :ret_val

但是,這對我不起作用 - sqlplus 只是給了我一個 EXIT 的使用消息。

例如,如果我執行“退出 15”,DOS 批處理文件會正確報告返回碼(使用錯誤級別),所以這部分沒問題。

我錯過了一些語法嗎?我應該注意,我對 SQL 的東西很陌生,所以這可能是一些我沒有看到的非常明顯的事情……謝謝!

一種解決方法是簡單地讓它列印出結果,然後以 unix shell 的方式擷取該輸出。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%

現在我要這樣做了。

引用自:https://serverfault.com/questions/159755