Java CallableStatement registerOutParameter是什么?它的作用是什么?

4
我是一名有用的助手,会将文本翻译成中文。
我正在遵循一个关于可调用语句的指南。
在这个指南中,它说我需要使用以下语句注册输出参数:
callsts.registerOutParameter(2, java.sql.Types.VARCHAR);

问题:我为什么需要这样做/它是干什么用的?

完整的Java代码:

String getcall = "{call gettitle (?,?)}";
CallableStatement callsts = connect.prepareCall(getcall);
int nID = 15;
callsts.setInt(1, nID);
callsts.registerOutParameter(2, java.sql.Types.VARCHAR);
callsts.execute();
String calltitle = callsts.getString(2);
System.out.println("Callable Stamement Title: "+calltitle);       

MySQL存储过程:

DELIMITER $$ 
DROP PROCEDURE IF EXISTS `nothingtowear`.`gettitle` $$
CREATE PROCEDURE  `nothingtowear`.`gettitle` (
IN nothingtowear_ID INT,
OUT nothingtowear_TITLE VARCHAR( 255 )) 
BEGIN 
SELECT Title INTO nothingtowear_TITLE
FROM articles
WHERE ID = nothingtowear_ID;
END $$
DELIMITER;
2个回答

5

输出参数是传递给SQL存储过程的参数,存储过程可以对其进行写入。在MySQL中也可以通过SET命令实现。

SET out_param1 = value

请参见mysql存储过程:输出参数了解另一个示例。 registerOutParameter会告诉JDBC驱动程序,这是一个输出参数,并且需要按此方式处理。例如,需要在调用语句后使用特殊语法来调用过程并检索输出值。

1

registerOutParameter用于在数据库服务器上创建变量,即SQL类型,用于存储值,并且可以使用索引在Java调用存储过程和函数上下文中访问。

例如:

callableStatement.registerOutParameter(1, java.sql.Types.VARCHAR);
......
// get cursor and cast it to ResultSet
String var = callableStatement.getString(1);

在 Oracle 中:
callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
// get cursor and cast it to ResultSet
ResultSet rs = (ResultSet) callableStatement.getObject(1);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接