存储过程是存储在数据库中的一个访问数据库的程序代码,一个存储过程对象提供了一种访问所有关系型数据库的存储过程的方法。
一个CallableStatement对象中包含了对一个存储过程的调用,这种调用可以用2种形式表式:一个形式是用一个结果参数,另一种形式则不用结果参数。结果参数指的是OUT参数,就是存储过程返回的值。
在JDBC开发中,可以通过调用DatabaseMeta对象的方法来检验数据库是否支持存储过程。方法supportsStoreProcedures会检测数据库系统是否支持存储过程,使用这个方法并对其返回的结果进行判断,如返回true,那么支持存储过程,否则不支持。而方法getProcedures会返回所有可用的存储过程的描述。
1、CallableStatement对象的创建
Connection conn;
......
CallableStatement cstmt
=
conn.prepareCall (
"
call getTestData (?, ?) }
"
);
//
创建可滚动可更新结果集的CallableStatement对象
String sql
=
"
{call getTestData ( ?, ?) }
"
;
CallableStatement cstmt
=
conn.prepareCall ( sql, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);
2、 IN、OUT 及 INOUT参数的引用
CallableStatement对象可以使用3种类型的参数:IN, OUT, INOUT。参数可以通过参数名来指定也可以通过参数的序号来指定,对每一个语句中的参数都要赋值,否则就不能执行。
一个存储过程中的参数数目、类型和属性可以通过DatabaseMetaData的getProcedureColumn方法来获得。
被传递到CallableStatement中的参数的序号是按照statement中"?"的顺序而确定的,如果存在文字参数,不计算文字参数,如:
CallableStatement cstmt
=
conn.prepareCall (
"
{ call proc ( ?,
"
Literal_Value
"
, ? ) }
"
);
cstmt.setString (
1
,
"
First
"
);
cstmt.setString (
2
,
"
Third

本文介绍了如何在JDBC中调用存储过程,包括CallableStatement对象的创建、IN/OUT/INOUT参数的引用,以及执行CallableStatement对象的方法。通过DatabaseMetaData的方法检查数据库是否支持存储过程,利用registerOutParameter设置OUT参数,使用getXXX方法获取结果。同时,讨论了CallableStatement返回结果的处理方式,包括结果集、更新数目的获取,以及对多个结果集的支持情况。
最低0.47元/天 解锁文章
1517

被折叠的 条评论
为什么被折叠?



