Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从存储过程中获取多计算值_Java_Sql Server_Stored Procedures_Jdbc_Sql Server 2008 R2 - Fatal编程技术网

Java 从存储过程中获取多计算值

Java 从存储过程中获取多计算值,java,sql-server,stored-procedures,jdbc,sql-server-2008-r2,Java,Sql Server,Stored Procedures,Jdbc,Sql Server 2008 R2,我有一个存储过程: ALTER PROCEDURE dbo.getRegionsInArea ( @areaID int, @ID int OUTPUT, @name varchar(50) OUTPUT ) AS BEGIN SET NOCOUNT ON SELECT @ID = [ID], @name = [name] FROM Region WHERE areaID = @areaID END 我想从JDBC调用它

我有一个存储过程:

ALTER PROCEDURE dbo.getRegionsInArea
    (
    @areaID int,
    @ID int OUTPUT,
    @name varchar(50) OUTPUT
    )
AS
BEGIN
    SET NOCOUNT ON
    SELECT @ID = [ID], @name = [name] FROM Region
    WHERE areaID = @areaID
    END
我想从
JDBC
调用它

问题G 如何获取变量输出的所有值
ID
name
,因为存储过程会返回它们的许多值

我试过的 问题 我只收到
ID
name
的最后一个值


有任何帮助,请尝试使用此解决方案:

callableStatement = con.prepareCall(storedProcedure); 
callableStatement.setInt(1, getID()); 
callableStatement.execute(); 
ResultSet resultSet = callableStatement.getResultSet(); 
while (resultSet.next()) { 
   int returnedID = resultSet.getInt(1); 
   String returnedName = resultSet.getString(2);   
}
并更改您的SP,如:

ALTER PROCEDURE dbo.getRegionsInArea 
( 
@areaID int
) 
AS 
BEGIN 
SET NOCOUNT ON 
SELECT [ID],[name] FROM Region 
WHERE areaID = @areaID 
END

您好,使用callableStatement.getResultSet()或callableStatement.executeQuery()有什么问题吗?您可以省略ID和Name的输出参数,只返回查询结果,而不将其存储在某些变量中。@Visalvaishya感谢您的评论,我可以使用用户
getResultSet
,但当我做了这个
ResultSet.next()
我在它上遇到了空指针异常。当我尝试使用
executequery()时,也发生了同样的情况。
您可以尝试使用游标吗。这是一个完整的例子。我会检查它,但请检查我的存储过程是否正确?
ALTER PROCEDURE dbo.getRegionsInArea 
( 
@areaID int
) 
AS 
BEGIN 
SET NOCOUNT ON 
SELECT [ID],[name] FROM Region 
WHERE areaID = @areaID 
END