你好,我有 PostgreSQL 一个匿名块,例如 DATA 是 java 中的一个字符串变量(其中我的匿名块)
DO $$DECLARE new_issue text;
BEGIN
new_issue := ?;
UPDATE FORM9902 SET HAS_ISSUE = 'Y',ISSUE_DESC = ISSUE_DESC || new_issue
WHERE FORM990_ID = ?;
END $$;
我正在执行上面的块
PreparedStatement preparedStatement = connection.prepareStatement(DATA);
preparedStatement.setString(1, "hai");
preparedStatement.setLong(2, new Long(0));
preparedStatement.executeUpdate();
但它抛出异常如下。
org.postgresql.util.PSQLException: The column index is out of range: 1, number of columns: 0.
at org.postgresql.core.v3.SimpleParameterList.bind(SimpleParameterList.java:63)
at org.postgresql.core.v3.SimpleParameterList.setStringParameter(SimpleParameterList.java:126)
at org.postgresql.jdbc.PgPreparedStatement.bindString(PgPreparedStatement.java:1096)
at org.postgresql.jdbc.PgPreparedStatement.setString(PgPreparedStatement.java:369)
at org.postgresql.jdbc.PgPreparedStatement.setString(PgPreparedStatement.java:353)
at sample.TestMain.main(TestMain.java:20)
谁能帮助我解决这个问题,或者指出我可以纠正自己的正确资源。
PostgreSQL 协议不提供将参数绑定到非计划语句(或非查询参数点)的方法。这意味着您无法参数化此类语句。换句话说,您不能在此类 do 块中绑定参数。
堆栈跟踪显示这是您的问题。您需要自己清理参数并进行字符串插值。
更好的方法是拥有一个可以将这些作为参数传递的函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)