使用 CallableStatement 调用 HSQLDB IDENTITY 函数以获取输出

Posted

技术标签:

【中文标题】使用 CallableStatement 调用 HSQLDB IDENTITY 函数以获取输出【英文标题】:Calling HSQLDB IDENTITY function with CallableStatement to get output 【发布时间】:2012-08-31 20:17:13 【问题描述】:

我正在尝试使用 CallableStatements 从 Java JDBC 获取 HSQLDB 中 IDENTITY() 的值。

我可以很好地准备通话。问题在于 registerOutputParameter。无论我传入什么索引,我都会得到“参数索引超出范围”。

我尝试了 SQL sn-ps,例如“? = CALL IDENTITY()”,但没有成功。

有什么线索吗?我是否完全偏离了如何从 JDBC 调用 HSQLDB 函数例程?

【问题讨论】:

【参考方案1】:

不使用IDENTITY(),而是使用getGeneratedKeys() 检索由(插入)语句生成的任何键。

请注意,您确实需要使用Statement.execute...Connection.prepare... 方法之一来启用此功能。

【讨论】:

【参考方案2】:

呸。

http://sourceforge.net/tracker/index.php?func=detail&aid=3530755&group_id=23316&atid=378134

不支持函数调用的输出参数。使用 executeQuery 并获取 ResultSet。

【讨论】:

以上是关于使用 CallableStatement 调用 HSQLDB IDENTITY 函数以获取输出的主要内容,如果未能解决你的问题,请参考以下文章

CallableStatement 的性能下降

使用 CallableStatement 调用 HSQLDB IDENTITY 函数以获取输出

CallableStatement 与语句

JDBC CallableStatement - 一次调用多个存储过程

java调用存储过程和函数

当前CallableStatement ou不是ResultSet,但是调用了getResultList(MySQL)