JDBC 调用存储函数 存储过程
2015-08-28 10:10
309 查看
JDBC调用存储过程
步骤:
1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例,
在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,
该方法指明如何调用存储过程。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
{call <procedure-name>[(<arg1>,<arg2>, ...)]}
2:通过CallableStatement对象的registerOutParameter()方法注册out参数;
3:通过CallableStatement对象的SetXXX()方法设定IN或IN OUT参数;
若想将参数设置为null 可以使用setNull()方法
4:通过CallableStatement的excute()方法执行存储过程;
5:如果调用的是带返回参数的存储过程,还需要通过CallableStatement对象的getXxx()获取其返回值;
案例代码:
步骤:
1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例,
在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串,
该方法指明如何调用存储过程。
{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
{call <procedure-name>[(<arg1>,<arg2>, ...)]}
2:通过CallableStatement对象的registerOutParameter()方法注册out参数;
3:通过CallableStatement对象的SetXXX()方法设定IN或IN OUT参数;
若想将参数设置为null 可以使用setNull()方法
4:通过CallableStatement的excute()方法执行存储过程;
5:如果调用的是带返回参数的存储过程,还需要通过CallableStatement对象的getXxx()获取其返回值;
案例代码:
/* * 文件名:FunctionTest.java * 版权:Copyright by www.huawei.com * 描述: * 修改人:Cuigaochong * 修改时间:2015-8-28 * 跟踪单号: * 修改单号: * 修改内容: */ package com.jdbc.function; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.SQLException; import java.sql.Types; import org.junit.Test; import com.jdbc.cgc.pro.OracleDbUtils; /** * <一句话功能简述> <功能详细描述> * * @author 姓名 工号 * @version [版本号, 2015-8-28] * @see [相关类/方法] * @since [产品/模块版本] */ public class FunctionTest { private OracleDbUtils utils = OracleDbUtils.getInstance(); /** * <一句话功能简述>JDBC调用存储函数 <功能详细描述> * * @see [类、类#方法、类#成员] */ @Test public void test00() { Connection conn = null; CallableStatement callableStatement = null; String sql = "{?=call get_sall(?,?)}"; try { conn = utils.connection(); // 1:通过Connection 对象的prepareCall()方法创建一个CallableStatement对象的实例, // 在使用Connection对象的prepareCall()方法时,需要传入一个String类型的字符串, // 该方法指明如何调用存储过程。 // {?= call <procedure-name>[(<arg1>,<arg2>, ...)]} // {call <procedure-name>[(<arg1>,<arg2>, ...)]} callableStatement = conn.prepareCall(sql); // 2:通过CallableStatement对象的registerOutParameter()方法注册out参数; callableStatement.registerOutParameter(1, Types.NUMERIC); callableStatement.registerOutParameter(3, Types.NUMERIC); // 3:通过CallableStatement对象的SetXXX()方法设定IN或IN OUT参数; // 若想将参数设置为null 可以使用setNull()方法 callableStatement.setInt(2, 80); // 4:通过CallableStatement的excute()方法执行存储过程; callableStatement.execute(); // 5:如果调用的是带返回参数的存储过程,还需要通过CallableStatement对象的getXxx()获取其返回值; double sum = callableStatement.getDouble(1); long empCount = callableStatement.getLong(3); System.out.println(sum); System.out.println(empCount); } catch (SQLException e) { e.printStackTrace(); } finally { utils.releaseSource(callableStatement, conn, null); } } }
相关文章推荐
- 黑马程序员 集合(二)
- 基于AndroidPN的消息推送应用
- ZooKeeper 配置注意事项 zoo.cfg
- ASP.NET - 在线编辑器(KindEditor)
- git冲突的解决
- 非原创:最大公约数问题
- 【HNOI 模拟】Dual-Sim Phone
- ios键盘类型设置
- 支付宝接口使用文档说明 支付宝异步通知(notify_url)与return_url. .
- 8 种提升 ASP.NET Web API 性能的方法
- Android界面布局学习总结
- const解析
- java及java web学习笔记
- thinkphp实现导航高亮的简单方法
- 关于保利威视平台的API调用签名
- hdu5050 Divided Land(二进制最大公约数+java强大的读写功能)
- 常见编译问题解决方法集
- 支付宝接口使用说明
- 0005 手动定制原版 Win7 操作系统(四)
- 卡脆TV是什么软件