Java呼叫MSSQL Stored Procedure時拋出 Incorrect syntax near '@P0' Exception


要透過java 來呼叫MSSQL上的 Stored procedure,確定在 MSSQL上 的Stored procedure是可以執行的,但透過Java呼叫卻持續出現  Incorrect syntax near '@P0' 錯誤



Query query = session.createSQLQuery("EXEC MY_SP (:param1, :param2)")
query.setParameter("param1", "value1");
query.setParameter("param2", "value2");
List resultList = query.list();


在runtime就會拋出Exception:

Caused by: java.sql.SQLException: Incorrect syntax near '@P0'
...

查了好一段時間,才發現自己犯了愚蠢的錯誤

MSSQL呼叫 Stored Procedure語法應該為

EXEC MY_SP param1, param2, param3...


而MySQL 呼叫 Stored Procedure語法為

CALL MY_SP(param1, param2, param3 ....)


拋出這個錯誤是因為參數傳遞方式錯了,MSSQL與MySQL 兩者的語法不同,才導致拋出這個錯誤,修正後就正常了。

真的是用錯誤來累積經驗,以後查資料時必須更注意各個文章的資訊,自己沒看清楚誤用了一些語法,可能原本幾分鐘可以處理完的問題會花上數十倍時間在查為什麼。

參考文章: https://www.javaquery.com/2014/01/javasqlsqlexception-incorrect-syntax.html

沒有留言:

張貼留言

Java Spring Framework 筆記 - Autowiring (2)

這篇記錄透過 Annotation來做到 Spring的 autowiring。