【发布时间】:2013-04-22 19:18:45
【问题描述】:
我有这个存储过程:
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给它打电话。
问题
如何获取变量输出ID 和name 的所有值,因为存储过程会返回它们的许多值。
我尝试了什么
Connection con = Database.getConnection();
String storedProcedure = "{call getRegionsInArea (?,?,?)}";
CallableStatement callableStatement = null;
try {
callableStatement = con.prepareCall(storedProcedure);
callableStatement.setInt(1, getID());
callableStatement.registerOutParameter(2,
java.sql.Types.INTEGER);
callableStatement.registerOutParameter(3,
java.sql.Types.VARCHAR);
callableStatement.execute();
System.out.println("ID = " + callableStatement.getInt(2));
System.out.println("name = "
+ callableStatement.getString(3));
问题
我刚刚收到ID 和name 的最后一个值。
请帮忙
【问题讨论】:
-
嗨,使用 callableStatement.getResultSet() 或 callableStatement.executeQuery() 是否有任何问题,您可以省略 ID 和 Name 的输出参数,只返回查询结果而不将其存储在某些变量中。
-
@VishalVaishya 感谢您的评论,我可以使用
getrestultset,但是当我使用restulsset.next()时,我得到了空指针异常 -
当我尝试使用
executequery()时发生了同样的事情 -
你能用Cursor试试吗?这是完整的例子。 mkyong.com/jdbc/…
-
我会检查一下,请问我的存储过程对吗?
标签: java sql-server stored-procedures jdbc sql-server-2008-r2