据此,是resultProperty
:
应存储命令返回码的属性名称
...因此它将从 SQL*Plus 中获取退出代码,而不是您查询的值。如果您的脚本有多个查询,或者有多个列的查询,您希望它设置什么?
您也许可以通过使用 SQL*PlusCOLUMN
命令的NEW_VALUE
语法创建替换变量来破坏退出状态来实现这一点:
column table_count new_value my_exit_code
select count(*) as table_count from ...
exit &my_exit_code
...但是您将失去任何检测真正错误的能力。
编辑:我忘记了退出代码是有限的;来自SQL*Plus 文档:
操作系统返回码的范围在某些操作系统上也受到限制。这限制了 EXIT n 和 EXIT 变量在平台之间的可移植性。例如,在 UNIX 上,返回码只有一个字节的存储空间;因此,返回码的范围被限制在 0 到 255 之间。
因此,除非您总是期望一个非常小的计数,否则这是行不通的,因为它会修改值,您甚至不能依赖零/非零是有意义的。
您可能实际上并不关心计数;您可能只是在测试某物的存在,在这种情况下,您可以执行以下操作:
select least(count(*), 1) as table_count from ...
...如果没有行,它会给你一个退出代码 0,如果有的话,它会给你一个退出代码。