gpt4 book ai didi

java - 从 Java 应用程序调用时,存储过程不会保留写入的表

转载 作者:行者123 更新时间:2023-12-01 12:58:48 25 4
gpt4 key购买 nike

我正在寻找我遇到的一个小问题的答案。我认为有一个我不知道的理论概念。请帮忙:

我有一个存储过程,可以从各种表和 View 中收集数据。 'sp_getData()'

在不同的时刻,它通过 INSERT 或 UPDATE 将中间结果写入“table_A”。在存储过程结束时,它通过简单的选择输出“tbl_A”中收集的数据

select field1, field2, ..etc...
from tbl_A
where <someCondition is met>

tbl_A 是静态的,应该在存储过程结束后保留​​其中的数据。

如果我从 SQLServer 查询分析器运行这个存储过程 - 一切都很好,表仍然存在。但是,如果我使用 Hibernate 从 java 应用程序调用存储过程,则 tbl_A 为空。但是,我确实在 Java 应用程序中获取了结果集。

这是Java代码部分:

  private void execute(Session session, int port) throws MyCustomSystemException{
String queryString = "{ call sp_getData(?) }";
Query q;
List resultList;
try {
q = session.createSQLQuery(queryString);
q.setInteger(0, port);
resultList = q.list();
}
catch (HibernateException hex) {
throw new MyCustomSystemException(
"STYSTEM ERROR: Can't execute
sp_getData(?) procedure.",
hex);
}

if (isSummaryReport())
merge(resultList);
System.out.println("==============") ;
if (isFullReport())
merge2(resultList);
}

我正在使用 Hibernate 版本:3.1.3

merge() 和 merge2() 是处理返回数据的方法。不包含数据库相关/hibernate 代码。

谁能帮忙???谢谢。

最佳答案

尝试切换 调用 sp_getdata(?)到 执行 sp_getdata()

Difference Between call and exec in SQL

关于java - 从 Java 应用程序调用时,存储过程不会保留写入的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23665537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com