【发布时间】:2015-06-29 07:45:25
【问题描述】:
作为复合 JPQL 查询的一部分,我正在使用子选择
(select count(obj)=0 from TABLE_NAME obj where obj.id = outerObject.id)
如果对象在 TABLE_NAME 中被删除,它应该返回布尔值。它在使用 H2 运行时效果很好,但在使用 DB2 9.7.0.4 运行时失败并出现语法错误。
我尝试在两个数据库上执行一些类似的裸 sql 查询,H2 可以毫无问题地执行所有这些查询,但是我无法在 DB2 中返回布尔值,例如
SELECT count(*)=0 from TABLE_NAME
失败并出现语法错误以及
SELECT 1=0 from TABLE_NAME
IBM 说 boolean 类型是在 9.7 中引入的,但我对用法感到困惑。页面http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.apdv.sqlpl.doc/doc/c0053651.html 说
布尔数据类型只能引用为:(...)返回类型
但它也说
结果集中不能返回布尔数据类型。
是否可以在 DB2 中执行布尔返回查询,或者我必须将 count(*) 返回给 Java 并在 Java 端检查它是否为零?
【问题讨论】:
-
BOOLEAN数据类型仅在 SQL PL 上下文(即存储过程、函数等)中可用,但在 SQL 本身中不可用。