【发布时间】:2013-05-07 09:48:05
【问题描述】:
我会先给你我的表格内容
这是我的存储过程:
ALTER PROCEDURE dbo.getFoodsForOrder
(
@orderID INT,
@ID INT OUTPUT,
@food_restaurantID INT OUTPUT,
@count INT OUTPUT,
@description VARCHAR(200) OUTPUT
)
AS
SET NOCOUNT ON
BEGIN
SELECT [ID],
[food_restaurantID],
[count],
[description]
FROM Order_Food
WHERE orderID = @orderID
END
我的问题
当我像这样从 JDBC 调用存储过程时
Connection con = Database.getConnection();
CallableStatement callableStatement = null;
try {
callableStatement = con
.prepareCall("{call getFoodsForOrder(?,?,?,?,?)}");
callableStatement.setInt(1, getID());
callableStatement.registerOutParameter(2, java.sql.Types.INTEGER);
callableStatement.registerOutParameter(3, java.sql.Types.INTEGER);
callableStatement.registerOutParameter(4, java.sql.Types.INTEGER);
callableStatement.registerOutParameter(5, java.sql.Types.VARCHAR);
System.out.println("ID = " + getID());
boolean haveResult = callableStatement.execute();
while (haveResult) {
System.out.println("here I am");
haveResult = callableStatement.getMoreResults();
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
if (callableStatement != null)
callableStatement.close();
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
它只打印一次here I am,一次,即使(如图片所示)我有超过 15 行是真的。
你的问题会问我是否确定 getID() 方法,是的,我确定,即使我用明确的 10 替换它,结果也不会改变。
有些东西可能会有所帮助
当我从我的 Visual Studio 调用该存储过程时,我得到了 17 个这样的结果:
任何帮助将不胜感激
【问题讨论】:
-
我猜这与你的问题stackoverflow.com/questions/16505812/…有关;如果您想作为结果集进行处理,请不要使用
OUTPUT参数。输出参数的CallableStatement部分似乎是为处理单个结果而设计的。 -
@MarkRotteveel 这个问题对我没有帮助,我只是接受它,因为我不想开始一个新线程
-
请帮帮忙
标签: java sql-server stored-procedures jdbc