在 Java 中使用 JDBC 调用 Oracle 存储过程387


在 Java 应用程序中,可以通过 JDBC(Java 数据库连接)调用 Oracle 数据库中的存储过程。存储过程是预编译的 PL/SQL 块,它封装了一系列 SQL 语句和逻辑,并可作为数据库中一个命名的对象进行调用。使用 JDBC 调用存储过程可以简化复杂数据库操作,提高代码可维护性。

连接到 Oracle 数据库

首先,需要使用 JDBC 连接到 Oracle 数据库。可以使用以下代码示例:```java
import .*;
public class OracleConnection {
public static void main(String[] args) {
try {
// JDBC 驱动程序名称和数据库 URL
String driver = "";
String url = "jdbc:oracle:thin:@//localhost:1521/orcl";
// 数据库用户名和密码
String username = "scott";
String password = "tiger";
// 加载 JDBC 驱动程序
(driver);
// 建立数据库连接
Connection connection = (url, username, password);
// ...执行数据库操作...
// 关闭数据库连接
();
} catch (Exception e) {
();
}
}
}
```

调用存储过程

使用 JDBC 调用存储过程需要使用 CallableStatement 对象。CallableStatement 允许执行具有输入、输出或输入/输出参数的存储过程。以下代码示例展示了如何使用 CallableStatement 调用存储过程:```java
import .*;
public class CallStoredProcedure {
public static void main(String[] args) {
try {
// 获取数据库连接
Connection connection = ();
// 创建 CallableStatement 对象
String storedProcedure = "{call get_employee_details(?, ?)}";
CallableStatement statement = (storedProcedure);
// 设置输入参数
(1, 100); // 员工 ID
// 注册输出参数
(2, );
// 执行存储过程
();
// 获取输出参数
String employeeName = (2);
// 打印结果
("Employee name: " + employeeName);
// 关闭 CallableStatement 和数据库连接
();
();
} catch (Exception e) {
();
}
}
}
```

输入和输出参数

存储过程可以具有输入、输出或输入/输出参数。输入参数用于向存储过程传递值,而输出参数用于从存储过程中返回值。输入/输出参数既可以作为输入又可以作为输出使用。

在 Java 中,可以使用以下方法设置和获取参数值:* 输入参数:使用 setXXX() 方法,其中 XXX 是参数类型,例如 setInt()、setString() 等。
* 输出参数:使用 registerOutParameter() 方法注册输出参数,然后使用 getXXX() 方法获取值。
* 输入/输出参数:既使用 setXXX() 方法也使用 registerOutParameter() 方法。

示例

以下是一个使用 JDBC 调用 Oracle 存储过程的完整示例,该存储过程获取指定员工的详细信息:```java
import .*;
public class GetEmployeeDetails {
public static void main(String[] args) {
try {
// 获取数据库连接
Connection connection = ();
// 创建 CallableStatement 对象
String storedProcedure = "{call get_employee_details(?, ?)}";
CallableStatement statement = (storedProcedure);
// 设置输入参数
(1, 100); // 员工 ID
// 注册输出参数
(2, );
// 执行存储过程
();
// 获取输出参数
String employeeName = (2);
// 打印结果
("Employee name: " + employeeName);
// 关闭 CallableStatement 和数据库连接
();
();
} catch (Exception e) {
();
}
}
}
```

2024-12-09


上一篇:Java 数组名:理解和使用

下一篇:如何有效清空 Java 中的字节数组