我正在嘗試使用 jdbc 調(diào)用存儲過程。我的連接是通過 namedParameterJdbcTemplate 傳遞的,這就是我必須用來調(diào)用它的方式,但是當(dāng)我嘗試這樣做時:public void storedProcedure(long fileId, String Action) { String sql = "call procedureName(?)"; try { namedParameterJdbcTemplate.update(sql, Long.valueOf(fileId) ); } catch (Exception e) { logger.error("Error while running stored procedure {}", sql, e); }}我收到以下錯誤:無法解析方法“更新(java.lang.String,java.lang.Long)”我試過查看但無法正常工作的來源:https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/jdbc.htmlhttps://lalitjc.wordpress.com/2013/07/02/different-ways-of-calling-stored-procedure-using-spring/https://www.logicbig.com/tutorials/spring-framework/spring-data-access-with-jdbc/spring-call-stored-procedure.html他們中的大多數(shù)人從一開始就創(chuàng)建了一個連接,但我已經(jīng)有了它(namedParameterJdbcTemplate),還有一些正在使用我不需要的數(shù)據(jù)源,因為我已經(jīng)有了連接。如何使用 namedParameterJdbcTemplate 進(jìn)行調(diào)用?
2 回答

慕后森
TA貢獻(xiàn)1802條經(jīng)驗 獲得超5個贊
它是這樣工作的:
final String sql = "call procedureName (:variable)";
SqlParameterSource namedParameters = new MapSqlParameterSource("variable", variable);
try {
namedParameterJdbcTemplate.update(sql, namedParameters);
} catch (Exception e){
...
}

桃花長相依
TA貢獻(xiàn)1860條經(jīng)驗 獲得超8個贊
你的語法看起來不對。使用 NamedParameterJdbcTemplate 調(diào)用更新時,您需要使用這兩個方法簽名中的任何一個來調(diào)用該方法。
update(String?sql,?Map<String,?>?paramMap)
或者
update(String?sql,?SqlParameterSource?paramSource)
添加回答
舉報
0/150
提交
取消