gpt4 book ai didi

java - 从另一个存储过程中的存储过程获取 ResultSet

转载 作者:太空宇宙 更新时间:2023-11-04 11:07:18 28 4
gpt4 key购买 nike

我有一个调用另一个存储过程的存储过程。内部存储过程返回结果集。使用 CallableStatement 执行调用存储过程后,我无法获取被调用存储过程返回的结果集。

我尝试了 executeexecuteQuery 来执行可调用语句。当我从 SQL Server 执行调用存储过程时,我得到了正确的结果。

调用过程:-

ALTER PROC [User].[Get_Data]
(@UserID NVARCHAR(20))
AS
BEGIN
Select 'User Data'
Exec [Order].[Get_Order] @UserID
END

调用的过程:-

ALTER PROC [Order].[Get_Order]
(@UserID NVARCHAR(20))
AS
BEGIN
Select * from orders where userId=@UserID
END

最佳答案

您的外部存储过程返回两个结果集:

  1. 选择“用户数据”的结果
  2. Exec [Order].[Get_Order] @UserID 的结果

您需要调用.getMoreResults()才能检索第二个结果集,例如,

CallableStatement cs = connection.prepareCall("{CALL Get_Data (?)}");
cs.setString(1, "gord");
ResultSet rs = cs.executeQuery();
System.out.println("[First result set]");
while (rs.next()) {
System.out.printf("(No column name): %s%n", rs.getString(1));
}
cs.getMoreResults();
rs = cs.getResultSet();
System.out.println();
System.out.println("[Second result set]");
while (rs.next()) {
System.out.printf("userId: %s, orderId: %s%n",
rs.getString("userId"), rs.getString("orderId"));
}

制作

[First result set]
(No column name): User Data

[Second result set]
userId: gord, orderId: order1
userId: gord, orderId: order2

(使用连接到 SQL Server 2014 的 mssql-jdbc-6.2.1.jre8.jar 进行测试。)

更多详情,请参阅

How to get *everything* back from a stored procedure using JDBC

关于java - 从另一个存储过程中的存储过程获取 ResultSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46366769/

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