调用存储过程对象

 存储过程是存储在数据库中的一个访问数据库的程序代码,一个存储过程对象提供了一种访问所有关系型数据库的存储过程的方法。

一个CallableStatement对象中包含了对一个存储过程的调用,这种调用可以用2种形式表式:一个形式是用一个结果参数,另一种形式则不用结果参数。结果参数指的是OUT参数,就是存储过程返回的值。

在JDBC开发中,可以通过调用DatabaseMeta对象的方法来检验数据库是否支持存储过程。方法supportsStoreProcedures会检测数据库系统是否支持存储过程,使用这个方法并对其返回的结果进行判断,如返回true,那么支持存储过程,否则不支持。而方法getProcedures会返回所有可用的存储过程的描述。

1、CallableStatement对象的创建

Connection conn;
......

CallableStatement cstmt
= conn.prepareCall (  " call getTestData (?, ?) }  " );
// "?"所代表的参数的类型取决于存储过程getTestData,根据getTestData的不同, "?"可能为IN参数、OUT参数
// 或INOUT参数中的一种
// 创建可滚动可更新结果集的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
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值