可调用语句中registerOutParameter的含义和用途是什么

What is the meaning and use of registerOutParameter in callable statements

我本可以问我的一位同事这个问题,但我想如果我需要知道这个,那么其他新手也需要知道,所以最好把它放在堆栈溢出上。

我正在尝试执行 registerOutParameter 函数的功能。例如:

callableStatement.registerOutParameter(2, java.sql.Types.VARCHAR);

我得到了返回的 registerOutParameter returns 值,而不是 ResultSet,或者除了 ResultSet 之外。我无法想象那会如何发生或可能的用例是什么。

所以你知道这不是懒惰,到目前为止我已经看了:

看来这个问题太基础了,无法涵盖。

背景信息,我正在 www.mkyong.com/jdbc/jdbc-callablestatement-stored-procedure-out-parameter-example/

做一个关于存储过程的教程

您的问题与如何在 RDBMS 中执行存储过程有关。请注意,通过 CallableStatement 执行存储过程与执行 SELECT 查询非常不同,后者 return 是 ResultSet。当执行这样的查询时,RDBMS 将 return 列的描述,并且 driver 使用此描述来了解对数据的期望。

在执行存储过程之前,JDBC 规范规定您必须为每个 OUT 参数调用 registerOutParameter。这是为了向 driver 指示它应该期望什么数据。为什么?因为对于许多 RDBMS 来说,没有办法描述存储过程。由用户通过此 API 定义输出参数。 driver 无法自行解决。然后你可以执行存储过程,然后调用 CallableStatement 上的 getter 来获取你注册的 OUT 参数的值。