我知道不止一个结果,你没有太多选择使用 out 参数,但我想知道以下两种情况有什么区别,其中有一个 out 参数。
假设我有两个存储过程:
CREATE PROCEDURE no_out_params(IN foo INT)
BEGIN
SELECT foo + 1 as result;
END
和
CREATE PROCDURE with_out_params(IN foo INT, OUT result INT)
BEGIN
SET result = foo + 1;
END
然后使用 JDBC 我可以:
CallableStatement c1 = conn.prepareCall("{ call no_out_params(?)}");
c1.setInt(1, 5);
ResultSet rs = c1.executeQuery();
if (rs.next()) {
return rs.getInt("result"); // or rs.getInt(1)
}
或
CallableStatement c1 = conn.prepareCall("{ call with_out_params(?, ?)}");
c1.setInt(1, 5);
c1.registerOutParameter(2, Types.INT);
c1.executeQuery();
return c1.getInt(2);
假设您正确关闭了 try/finally 中的所有内容(为简洁起见省略),非输出参数方法是否提供任何优势?如果不是,假设应该始终使用 out 参数是否合理(如果只是为了在有多个结果的情况下保持一致)?
最佳答案
Assuming you're properly closing everything in try/finally's (omitted for brevity), does the non-out parameter method provide any advantage?
优点是能够检索结果集(使用任何语言,Java/等)而无需定义所有 OUT 参数(没有值(value)的额外工作)。
如果您只返回一个值,您可能想看看 FUNCTION 是否可行。
关于java - 在返回通过 JDBC 调用的单个结果的存储过程中,使用 out 参数与按列获取结果有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3930085/