我有一个 DOS 批处理文件,它调用 sqlplus,执行另一个 .sql 文件中包含的一些基本 SQL,我希望它的最后一部分将值返回到 dos 批处理文件。但是,虽然 Google 上有很多关于如何使用 Unix shell 执行此操作的示例,但我得到的最接近 DOS 批处理文件的示例如下:
SELECT
MAX(magicnumber)
INTO
:ret_val
FROM
ABCD.EFGH
exit :ret_val
但是,这对我来说不起作用-sqlplus只给我一个EXIT的使用消息。
例如,如果我执行“退出 15”,则 DOS 批处理文件会正确报告返回代码(使用错误级别),因此该部分是没问题的。
我是不是遗漏了某些语法?我应该指出,我对 SQL 还很陌生,所以可能有些非常明显的东西我没有注意到...谢谢!
答案1
一种解决方法是简单地让它打印出结果,然后像 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%
现在我要这么做。