我有一个带有以下函数头的PL / pgSQL函数:
CREATE OR REPLACE FUNCTION create_workflow_archive(VARCHAR(6),BYTEA[]) RETURNS SETOF TEXT
该功能已成功测试。 所以我想用spring框架的NamedParameterJdbcTemplate调用该函数。我的java代码如下:
String mId; List<byte[]> datas; // Has a valid value
String sql = "SELECT * FROM create_workflow_archive(:mid, ARRAY[:datas])";
NamedParameterJdbcTemplate createArchive = new NamedParameterJdbcTemplate(this.dataSource);
MapSqlParameterSource parameters = new MapSqlParameterSource();
parameters.addValue("mid", mId, Types.VARCHAR);
parameters.addValue("datas", datas);
return createArchive.query(sql, parameters, new RowMapper<UUID>() {
public UUID mapRow(ResultSet resultSet, int i) throws SQLException {
return UUID.fromString(resultSet.getString("data"));
}
});
但我收到了例外:
org.springframework.dao.InvalidDataAccessApiUsageException: No value supplied for the SQL parameter 'datas]': No value registered for key 'datas]'
如何正确调用PL / pgSQL函数的JdbcTemplate语法?