0

我想使用命名查询调用 PL/SQL 函数。其中一个参数给我带来了问题。在 PL/SQL 定义中,它的类型是 NUMBER。这是设置它的 Java 代码: q.setParameter (Test.DISTRICT_ID_PARAM,districtId); 并且districtIdLong.

districtId不为空时一切正常,但当它为空时,结果如下: org.hibernate.exception.SQLGrammarException: could not execute query

我确信管道没有问题,因为查询在districtId不为空时运行良好。

4

1 回答 1

0

我不熟悉 Java 或 Hibernate,但在我编写的 Oracle 应用程序中,我遇到过使用空参数 (C#) 的类似行为 - 如果 Java 有这个概念,您是否尝试将参数值设置为 DB null (在 C# DBNull.Value 中)?

如果值为 null,我认为 Oracle 将其解释为根本没有传递参数。

于 2011-07-20T07:06:04.147 回答