Java CallableStatement 接口

2024 年 8 月 29 日 | 阅读 3 分钟

CallableStatement 接口用于调用存储过程和函数

我们可以通过使用存储过程和函数在数据库上实现业务逻辑,这将提高性能,因为它们是预编译的。

假设您需要根据出生日期获取员工的年龄,您可以创建一个函数,该函数接收日期作为输入并返回员工的年龄作为输出。


存储过程和函数有什么区别?

存储过程和函数之间的区别如下:

Stored Procedure函数
用于执行业务逻辑。用于执行计算。
不能有返回类型。必须有返回类型。
可以返回 0 个或多个值。只能返回一个值。
我们可以在过程中调用函数。不能在函数中调用过程。
过程支持输入和输出参数。函数仅支持输入参数。
存储过程可以使用 try/catch 块进行异常处理。用户定义函数不能使用 try/catch 进行异常处理。

如何获取 CallableStatement 实例?

Connection 接口的 prepareCall() 方法返回 CallableStatement 的实例。语法如下:

获取 CallableStatement 实例的示例如下:

它调用接收 2 个参数的过程 myprocedure。


使用 JDBC 调用存储过程的完整示例

要调用存储过程,您需要在数据库中创建它。这里,我们假设存储过程如下所示。

表结构如下:

在此示例中,我们将调用存储过程 INSERTR,该过程接收 id 和 name 作为参数并将其插入到表 user420 中。请注意,您还需要创建 user420 表才能运行此应用程序。

现在检查数据库中的表,值已插入到 user420 表中。


使用 JDBC 调用函数的示例

在此示例中,我们调用 sum4 函数,该函数接收两个输入并返回给定数字的和。在这里,我们使用了 CallableStatement 接口的 registerOutParameter 方法,该方法将其对应的类型注册为输出参数。它向 CallableStatement 提供有关所显示结果类型的信息。

Types 类定义了许多常量,例如 INTEGER、VARCHAR、FLOAT、DOUBLE、BLOB、CLOB 等。

首先在数据库中创建一个简单的函数。

现在,让我们编写一个简单的程序来调用该函数。

Output: 53