JDBC CallableStatement存储过程
2018-03-20 19:58 更新
JDBC教程 - JDBC CallableStatement存储过程
CallableStatement接口可以接受运行时输入参数。
CallableStatement用于执行数据库存储过程。
Connection对象也可以创建CallableStatement来调用数据库存储过程。
例子
假设,我们有以下MySQL存储过程。
DELIMITER $$ DROP PROCEDURE IF EXISTS `EMP`.`getEmpName` $$ CREATE PROCEDURE `EMP`.`getEmpName` (IN EMP_ID INT, OUT EMP_FIRST VARCHAR(255)) BEGIN SELECT first INTO EMP_FIRST FROM Emp WHERE ID = EMP_ID; END $$ DELIMITER ;
上面的存储过程定义了两个参数,一个是EMP_ID,另一个是EMP_FIRST。它通过员工id返回员工的名字。
IN和OUT之前的参数名称告诉参数的类型。 IN用于数据输入,OUT用于数据输出。
在上面的代码中,我们传入IN的员工id,并得到OUT的名字。
我们还可以有INOUT参数,它们都可以接受值和传递值。
共有三种类型的参数:IN,OUT和INOUT。
PreparedStatement和CallableStatement都可以接受参数。
PreparedStatement对象仅使用IN参数。 CallableStatement对象可以使用所有三个。
参数 | 描述 |
---|---|
IN | 创建SQL语句时其值未知的参数。我们使用setXXX()方法将值传递给IN参数。 |
OUT | 从SQL语句返回其值的参数。我们使用getXXX()方法从OUT参数中获取值。 |
INOUT | 参数可以传入和传出值。我们用setXXX()方法绑定变量,并用getXXX()方法检索值。 |
以下代码显示如何调用存储过程。
conn是 Connection
的一个对象。
CallableStatement cstmt = null; String SQL = "{call getEmpName (?, ?)}"; cstmt = conn.prepareCall (SQL);
关闭CallableStatement对象
我们需要关闭CallableStatement对象来释放资源。
首先关闭Connection对象,它也将关闭CallableStatement对象。
CallableStatement cstmt = null; String SQL = "{call getEmpName (?, ?)}"; cstmt = conn.prepareCall (SQL); cstmt.close();
以上内容是否对您有帮助:
更多建议: