使用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
答案 0 :(得分:0)
从我在此问题上收到的所有评论中,只需指出无法将INSERT .... RETURNING
语句用作CallableStatement
的参数的方向。
它可以作为参数PreparedStatement
使用Statement.RETURN_GENERATED_KEYS
作为第二个参数,正如我之前在问题中所述。
或者可以通过将其包装在Postgresql数据库架构中的存储函数中,然后在{? = CALL <STORED FUNCTION>}
中使用CallableStatement
作为参数来使用它。