0
回到我使用SimpleJdbcCall執行存儲過程如下:春:存儲過程輸出參數在錯誤的順序
public static List<Object> callSp(JdbcTemplate jdbcTemplate, String storedProcedureName, Object... inParameters) {
try {
final SimpleJdbcCall jdbcCall = new SimpleJdbcCall(jdbcTemplate).withProcedureName(storedProcedureName);
return newArrayList(jdbcCall.execute(inParameters).values());
} catch (DataAccessException e) {
throw new RuntimeException(e.getMessage(), e);
}
}
一切工作的魅力,但我面臨以下問題:在存儲過程中的輸出參數返回錯誤的順序。所以,如果你沒有關於輸出的信息 - 你無法正確處理它。正如我發現的,這是因爲在JdbcTemplate#extractOutputParameters中使用HashMap來收集輸出(而不是LinkedHashMap,其中條目的順序與插入順序相同)。
我知道我可以明確定義輸出,但是我沒有這樣的信息,這個方法應該可以和任何傳入的存儲過程一起工作。另外,我知道有可能使用StoredProcedure,但是會有相同的問題,因爲它使用相同的JdbcTemplate方法。
目前,作爲臨時解決方案,我從數據庫元數據和映射返回的值中檢索有關輸出(名稱和序號位置)的信息。
有沒有人遇到過這個問題,您的解決方案是什麼?
林:
輸出參數可以註冊這樣。據我所知,命名參數只用於輸入參數。我錯了嗎? –
我已經應用了我們用於輸出參數的codesample。 – tillias
在您的解決方案中,我仍然需要知道輸出參數的名稱 –