Oracle
SQL、pl/sql、sqlplus:如何將變數返回到 DOS 批處理文件?
我有一個呼叫 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%
現在我要這樣做了。