如何在 JDBC callableStatement 中使用 INSERT....RETURNING
How can you use INSERT....RETURNING in a JDBC callableStatement
使用 Callable 语句我想 return 我的数据库中的序列类型列而不使用函数来完成它。
因此,我尝试使用以下语句作为参数传递给我的连接的 prepareCall
函数以生成 CallableStatement
.
{? = INSERT INTO schema.tbl (col1, col2, col3, col5) VALUES (?, ?, ?, ?) RETURNING col6}
此处 col6
的数据类型为 serial
。
但这会产生异常:
org.postgresql.util.PSQLException: Malformed function or procedure escape syntax at offset 5.
我觉得这个语句使用的语法是错误的。如果是这样的话,正确的说法是什么?
注意: 我无法使用 connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
注意:我也知道如何通过在 Postgresql 数据库模式中声明一个函数来完成。请不要回答此问题的解决方法。
我特别要求请回答说明如何更改语句,以便它可以与 CallableStatement
一起使用
从我收到的关于这个问题的所有评论中,都简单地指出了不能使用 INSERT .... RETURNING
语句作为 CallableStatement
的参数的方向。
它可以用作参数 PreparedStatement
,使用 Statement.RETURN_GENERATED_KEYS
作为第二个参数,正如我在问题前面所述。
或者可以通过将其包装在 Postgresql 数据库架构中的存储函数中然后使用 {? = CALL <STORED FUNCTION>}
作为 CallableStatement
中的参数来使用。
使用 Callable 语句我想 return 我的数据库中的序列类型列而不使用函数来完成它。
因此,我尝试使用以下语句作为参数传递给我的连接的 prepareCall
函数以生成 CallableStatement
.
{? = INSERT INTO schema.tbl (col1, col2, col3, col5) VALUES (?, ?, ?, ?) RETURNING col6}
此处 col6
的数据类型为 serial
。
但这会产生异常:
org.postgresql.util.PSQLException: Malformed function or procedure escape syntax at offset 5.
我觉得这个语句使用的语法是错误的。如果是这样的话,正确的说法是什么?
注意: 我无法使用 connection.prepareStatement(sql,Statement.RETURN_GENERATED_KEYS);
注意:我也知道如何通过在 Postgresql 数据库模式中声明一个函数来完成。请不要回答此问题的解决方法。
我特别要求请回答说明如何更改语句,以便它可以与 CallableStatement
从我收到的关于这个问题的所有评论中,都简单地指出了不能使用 INSERT .... RETURNING
语句作为 CallableStatement
的参数的方向。
它可以用作参数 PreparedStatement
,使用 Statement.RETURN_GENERATED_KEYS
作为第二个参数,正如我在问题前面所述。
或者可以通过将其包装在 Postgresql 数据库架构中的存储函数中然后使用 {? = CALL <STORED FUNCTION>}
作为 CallableStatement
中的参数来使用。