SQL、pl/sql、sqlplus:如何将变量返回给 DOS 批处理文件?

SQL、pl/sql、sqlplus:如何将变量返回给 DOS 批处理文件?

我有一个 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%

现在我要这么做。

相关内容