要透過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
沒有留言:
張貼留言