java - 无法从 Java 中的 StoredProc 获取结果集

标签 java sql-server stored-procedures jdbc

我们正在尝试在 Java 中执行存储过程,如下所示,

CREATE PROCEDURE [dbo].[MyProc] 
(
    @input1 varchar(20),
    @input2 varchar(20),
    @responsecode       varchar(10) output
)
AS

//Implementation

SELECT @a,@b,@c,@d;

SELECT @responsecode;

Java 代码如下所示,

callableStatement = conn.prepareCall("{call MyProc("2","2"))}");
callableStatement.registerOutParameter(3, Types.VARCHAR);           
callableStatement.registerOutParameter(4,Types.JAVA_OBJECT);

如您所见,我们正在尝试从存储过程中获取两个输出参数,

我们能够在索引 3 处获取响应代码,但是 @a、@b、@c、@d 应该作为索引 4 处的结果集(可能是我错了)

您能给我一些关于获取此类存储过程的结果集的建议吗?

当我在 Microsoft SQL Server Managment Studio 中执行此存储过程时,我可以看到两种类型的响应,第一种是结果集,另一种是 ResponseCode,如下所示,

enter image description here

最佳答案

您将结果集与输出参数混淆了。您帖子中的存储过程只有一个输出参数,@responsecode

在过程中设置输出参数后,不需要选择输出参数:

create procedure testsp (@param int output)
as
    set @param = 1

GO

declare @param int

exec testsp @param output


select @param

因此,删除SELECT @responsecode;,以及可调用语句中的第四个注册参数。

要获取数据,请迭代 executeQuery() 返回的结果集。

关于java - 无法从 Java 中的 StoredProc 获取结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15926534/

相关文章:

sql-server - 如何在同一环境中的 Rails 中使用 2 个不同的数据库适配器(SQL Server 和 PostgreSQL)?

sql-server - 从 Excel 到 SQL Server 的数据导入无法导入所有数据

c# - ORA-06502、ORA-06512 Oracle 存储过程错误

java - 为给定场景定义更有效的逻辑

java - Java中的多个客户端到服务器通信程序

java - NDK : Pass text field value to c++ string

sql-server-2008 - 如何确定参数值是否传递给存储过程

java - 当我只有 BigInteger 时,如何使用 ArrayList<Integer>#contains?

c# - 替换多个字段中的多个特殊字符 SQL

mysql - MySQL 中带游标的存储过程