📅  最后修改于: 2023-12-03 15:01:28.960000             🧑  作者: Mango
Java CallableStatement接口是一个Java数据库编程接口(API),用于执行存储过程或函数(即可调用的SQL语句)。与普通的PreparedStatement不同,CallableStatement可以返回更新的结果集。
CallableStatement接口继承了PreparedStatement接口。
CallableStatement提供了许多方法,用于执行各种SQL任务。以下是一些最常用的方法:
注册一个输出参数,用于存储存储过程或函数的返回值。
connection.prepareCall("{? = call my_function()}").registerOutParameter(1, Types.INTEGER);
执行一个存储过程或函数。
CallableStatement statement = connection.prepareCall("{call my_procedure()}");
statement.execute();
设置输入参数。
CallableStatement statement = connection.prepareCall("{call my_procedure(?)}");
statement.setInt(1, 42);
statement.execute();
获取输出参数。
CallableStatement statement = connection.prepareCall("{call my_procedure(?)}");
statement.registerOutParameter(1, Types.VARCHAR);
statement.execute();
String result = statement.getString(1);
假设有以下存储过程:
CREATE PROCEDURE my_procedure(IN a INT, OUT b VARCHAR(20))
BEGIN
SET b = CONCAT('Hello, ', CAST(a AS CHAR));
END
以下示例展示了如何使用CallableStatement调用存储过程,并获取结果:
CallableStatement statement = connection.prepareCall("{call my_procedure(?, ?)}");
statement.setInt(1, 42);
statement.registerOutParameter(2, Types.VARCHAR);
statement.execute();
String result = statement.getString(2); // result = "Hello, 42"