我有一个调用sqlplus的DOSbatch file,它执行另一个.sql文件中包含的一些基本的SQL,我希望它的最后一部分返回一个值到DOSbatch file。 不过,虽然有很多关于如何使用Unix shell来实现这个function的例子,但是最接近DOSbatch file的是这样的:
SELECT MAX(magicnumber) INTO :ret_val FROM ABCD.EFGH exit :ret_val
但是,这并不适用于我 – sqlplus只是给我一个用于EXIT的用法消息。
如果我做“退出15”,例如,DOSbatch file正确地报告返回码(使用错误级别),那么部分是可以的。
有一些我错过了语法的东西吗? 我应该注意到,我对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 -su/p@db @t`) DO set xresult=%%i echo %xresult%
现在我正在与这个。