我第一次使用Java調用一個SP,所以這可能是一個我忽略的簡單問題。hibernate createStoredProcedureQuery execute throws callablestatement.getmoreresults
我有幾種方法,我正在嘗試做到這一點,並在兩者上都出現錯誤。
em是一個EntityManager,它在類中聲明的更高,我在調試期間檢查過它,並且數據庫連接是正確的。
第一個是使用StoredProcedureQuery引發錯誤;
javax.persistence.PersistenceException:org.hibernate.SQLGrammarException:錯誤調用CallableStatement.getMoreResults
try {
StoredProcedureQuery query = em.createStoredProcedureQuery("usp_myProc");
query.registerStoredProcedureParameter(0, Integer.class, ParameterMode.IN);
query.setParameter(0, id);
query.execute();
}
catch (Exception ex) {
log.error(ex.toString());
}
我的第二次嘗試,試圖用本機查詢(當我閱讀文檔聽起來右)
try {
Query query1 = em.createNativeQuery("EXEC usp_myProc ?");
query1.setParameter(1, id);
Integer val = (Integer) query1.getSingleResult();
}
catch (Exception ex) {
log.error(ex.toString());
}
該過程已被簡化爲一個簡單的「選擇1」,以確保這不是問題。
PROCEDURE [usp_myProc]
-- Add the parameters for the stored procedure here
@id INT
AS
BEGIN
SELECT 1
END
我已經谷歌周圍(這是我從哪裏得到原生查詢代碼),但無法得到任何回報。即使只是一個沒有返回值的存儲過程調用,現在對我來說也是神的結果。
感謝您提供任何幫助。
感謝您的幫助,但我仍然得到同樣的錯誤 –
嘗試在程序開始時設置'SET NOCOUNT ON'避免數據庫統計信息返回 – Reimeus
Reimeus破解它,再次感謝您的幫助 –