[英]JPA Stored Procedure throwing exception: could not extract ResultSet
我正在嘗試從 azure sql 調用一個基本存儲過程,它只是返回數字 1,看起來像這樣
CREATE PROCEDURE [dbo].[testProc]
@TableName varchar(100)
AS
BEGIN
SET NOCOUNT ON
SELECT 1
END
我有一個 spring 啟動應用程序嘗試使用 @Query 注釋調用存儲過程
@Repository
@Transactional
public interface TestDAO extends JpaRepository<TestEntity, Long> {
@Query(value = "CALL testProc(:TableName)", nativeQuery = true)
Long invokeTestProc(@Param("TableName") String TableName);
}
但是,我得到一個異常,上面寫着“'@P0' 附近的語法不正確”和 SQLGrammarException:無法提取 ResultSet。
我不知道如何解決這個問題,我嘗試將@Procedure 與@NamedStoredProcedureQueries 注釋一起使用,它引發了另一個異常,說“不能將位置參數與命名參數注冊混合;”
根據 Azure Sql 的文檔,您必須使用以下內容調用存儲過程
執行 HumanResources.uspGetEmployeesTest2 N'Ackerman', N'Pilar';
- 或者
EXEC HumanResources.uspGetEmployeesTest2 @LastName = N'Ackerman',@FirstName = N'Pilar';
所以在你的情況下,這將被翻譯為
@Query(value = "EXECUTE testProc :TableName", nativeQuery = true)
Long invokeTestProc(@Param("TableName") String TableName);
或者
@Query(value = "EXEC testProc @TableName = :TableName", nativeQuery = true)
Long invokeTestProc(@Param("TableName") String TableName);
因此,考慮到您使用本機查詢,
異常顯示“'@P0' 附近的語法不正確”和 SQLGrammarException:無法提取 ResultSet。
指錯誤使用 sql 語法,您不使用 execute 或 exec 並且您還以 Azure SQL 預期的方式傳遞參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.