我在语句中设置了10个带有问号的参数,并提供了10个相关值。在执行时,它抛出此错误“org.postgresql.util.PSQLException:没有为参数11指定值。”我在另一个表中遇到类似的问题,它也要求超出范围参数。我可以手动运行PostGres的查询没有任何问题。请提前感谢,请参阅下面的日志。
[DBOperations]:INSERT INTO product.SHIB_RP_MD_PROVIDER(RP_MD_PROVIDER_ID,MD_PROVIDER_TYPE_ID,MD_ID,SRC_ORG_ID,MD_NAME,MD_DESC,PARENT_RP_MD_PROVIDER_ID,LAST_UPDATE_USER,LAST_UPDATE_DATE,SYSTEM_IND,ORG_ID) VALUES (?,?,?,?,?,?,?,?,date_trunc('second' , now()),?,?)
[DBOperations]:No value specified for parameter 11. org.postgresql.util.PSQLException: No value specified for parameter 11.
[DBOperations] - Index 1 - Value 10042
[DBOperations] - Index 2 - Value 4
[DBOperations] - Index 3 - Value aa
[DBOperations] - Index 4 - Value 2
[DBOperations] - Index 5 - Value aa
[DBOperations] - Index 6 - Value null
[DBOperations] - Index 7 - Value 0
[DBOperations] - Index 8 - Value 1234
[DBOperations] - Index 9 - Value 0
[DBOperations] - Index 10 - Value 2
答案 0 :(得分:2)
INSERT INTO dah53idm.SHIB_RP_MD_PROVIDER(RP_MD_PROVIDER_ID,MD_PROVIDER_TYPE_ID,
MD_ID,SRC_ORG_ID,MD_NAME,
MD_DESC,PARENT_RP_MD_PROVIDER_ID,
LAST_UPDATE_USERID,
LAST_UPDATE_DATE,
SYSTEM_IND,ORG_ID) VALUES (?,?,?,?,?,?,?,?,date_trunc('second' , now()),?,?)
答案很明显。但无论如何我会指出它,你有11 question marks
这意味着你应该添加11 values
来执行查询,但在你的代码中你要添加only 10
,因此异常{{ 1}}
答案 1 :(得分:0)
将所有参数正确分配给值
for (User user : users) {
System.out.println("Inserting Data for Userr name" + user.getName());
jdbcTemplate.update("insert into USERR(Id,Name,Dept,Salary)
values(?,?,?,?)",
preparedStatement -> {
preparedStatement.setLong(1,user.getId());
preparedStatement.setString(2, user.getName());
preparedStatement.setString(3, user.getDept());
preparedStatement.setLong(4, user.getSalary());
});