我第一次使用Java来调用SP,所以这可能是我忽略的一个简单问题.
我有几种方法,我正在尝试这样做,并在两者上都遇到错误.
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());
}
Run Code Online (Sandbox Code Playgroud)
我的第二次尝试是尝试使用本机查询(当我阅读文档时听起来是正确的)
try {
Query query1 = em.createNativeQuery("EXEC usp_myProc ?");
query1.setParameter(1, id);
Integer val = (Integer) query1.getSingleResult();
}
catch (Exception ex) {
log.error(ex.toString());
}
Run Code Online (Sandbox Code Playgroud)
程序已经被简化为一个简单的"选择1",以确保这不是问题.
PROCEDURE [usp_myProc]
-- Add the parameters for the stored procedure here
@id INT
AS
BEGIN
SELECT 1
END
Run Code Online (Sandbox Code Playgroud)
我有一个谷歌(这是我从中获取本机查询代码的地方),但无法获得任何回报.即使只是一个不返回值的存储过程调用,对我来说也是一个神的结果.
谢谢你提供的所有帮助.