0

使用 Callable 语句我想从我的数据库中返回串行类型列,而不使用函数来执行它。

因此,我尝试使用以下语句作为参数传递给我prepareCall的连接函数以生成CallableStatement.

{? = INSERT INTO schema.tbl (col1, col2, col3, col5) VALUES (?, ?, ?, ?) RETURNING col6}

这里col6的数据类型为serial.

但这会产生异常:

org.postgresql.util.PSQLException:偏移 5 处的函数或过程转义语法格式错误。

我觉得这个语句使用的语法是错误的。如果是这样,那么正确的说法是什么?

注意:我无法使用connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);

注意:我也知道如何通过在 Postgresql 数据库模式中声明一个函数来完成。请不要回答有关此方法解决问题的问题。

我特别要求请通过说明如何更改该语句以便它可以使用来回答CallableStatement

4

1 回答 1

0

从我收到的关于这个问题的所有评论中,简单地指出了不可能将INSERT .... RETURNING语句用作 a 的参数的方向CallableStatement

正如我在问题前面所说的,它可以用作第二个PreparedStatement参数。Statement.RETURN_GENERATED_KEYS

或者可以通过将其包装在 Postgresql 数据库模式中的存储函数中,然后{? = CALL <STORED FUNCTION>}CallableStatement.

于 2016-02-14T05:41:14.370 回答