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