转自:http://www.cnblogs.com/ysw-go/

如何使用JDBC调用存储在数据库中的函数或存储过程:

* 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement
*    对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串,
*    该字符串用于指明如何调用存储过程

* 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数

* 3.通过CallableStatement对象的setXxx()方法设定IN或In out
*    参数,若想将参数设为null,可以使用setNUll()

* 4.通过CallableStatement对象的execute()方法执行存储过程

* 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()函数进行获取

具体的代码实现:

 1     @Test
 2     public void testCallableStatement() {
 3         Connection connection = null;
 4         /**
 5          * 调用存储函数 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
 6          * 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}
 7          */
 8         // 调用存储函数和调用存储过程,一个sql语句的区别
 9         String sql = "{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}";
10         CallableStatement callableStatement = null;
11         try {
12
13             connection = JDBCTools.getConnection();
14             /*
15              * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement
16              * 对象的实例,在使用Connection对象的prepareCall() 方法时,需要传入一个String类型的字符串,
17              * 该字符串用于指明如何调用存储过程
18              */
19             callableStatement = connection.prepareCall(sql);
20
21             /*
22              * 2.通过CallableStatement对象的registerOutParameter() 方法注册Out参数
23              */
24             callableStatement.registerOutParameter(1, Types.NUMERIC);
25             callableStatement.registerOutParameter(3, Types.NUMERIC);
26
27             /*
28              * 3.通过CallableStatement对象的setXxx()方法设定IN或In out
29              * 参数,若想将参数设为null,可以使用setNUll()
30              */
31             callableStatement.setInt(2, 80);
32
33             /* 4.通过CallableStatement对象的execute()方法执行存储过程 */
34             callableStatement.execute();
35
36             /*
37              * 5.如果所调用的是带返回参数的存储过程没还需要通过CallableStatement对象的getXxx()
38              */
39             double sumSalary = callableStatement.getDouble(1);
40             long empCount = callableStatement.getLong(3);
41         } catch (Exception e) {
42             e.printStackTrace();
43         } finally {
44             JDBCTools.release(null, callableStatement, connection);
45         }
46     }

调用函数和存储过程的sql语句的区别:

* 调用存储函数 1.{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}
* 调用存储过程 2.{call <procedure-name>[(<arg1>,<arg2>, ...)]}

这个知识点暂时没用到,先做下笔记,待以后用到以后再深入研究,JDBC的学习暂时告一段落,开启新的学习征程!

【转】JDBC学习笔记(10)——调用函数&存储过程的更多相关文章

  1. JDBC学习笔记(10)——调用函数&存储过程

    如何使用JDBC调用存储在数据库中的函数或存储过程: * 1.通过COnnection对象的prepareCall()方法创建一个CallableStatement *    对象的实例,在使用Con ...

  2. python学习笔记10(函数一): 函数使用、调用、返回值

    一.函数的定义 在某些编程语言当中,函数声明和函数定义是区分开的(在这些编程语言当中函数声明和函数定义可以出现在不同的文件中,比如C语言),但是在Python中,函数声明和函数定义是视为一体的.在Py ...

  3. Java -- JDBC 学习--调用函数&存储过程

    调用函数&存储过程 /** * 如何使用 JDBC 调用存储在数据库中的函数或存储过程 */ @Test public void testCallableStatment() { Connec ...

  4. APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

    转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...

  5. JDBC学习笔记二

    JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...

  6. IOS学习笔记06---C语言函数

    IOS学习笔记06---C语言函数 --------------------------------------------  qq交流群:创梦技术交流群:251572072              ...

  7. ES6学习笔记<三> 生成器函数与yield

    为什么要把这个内容拿出来单独做一篇学习笔记? 生成器函数比较重要,相对不是很容易理解,单独做一篇笔记详细聊一聊生成器函数. 标题为什么是生成器函数与yield? 生成器函数类似其他服务器端语音中的接口 ...

  8. Go语言学习笔记七: 函数

    Go语言学习笔记七: 函数 Go语言有函数还有方法,神奇不.这有点像python了. 函数定义 func function_name( [parameter list] ) [return_types ...

  9. JDBC学习笔记一

    JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...

随机推荐

  1. [.net 面向对象程序设计深入](14)Redis——基础

    [.net 面向对象程序设计深入](14)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  2. cocos2dx 中文路径编译错误记录

    '/Q' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1> 'y' 不是内部或外部命令,也不是可运行的程序1> 或批处理文件.1>C:\Program Files ...

  3. ThinkPhp框架:有条件的数据库查询、tp框架的其他知识

    上一篇的随笔写的是基本操作,现在可以做一些高级操作,例如有条件的查询数据,有分页的条件查询数据 一.一个条件的查询数据 查询数据自然是先要显示出数据,然后根据条件进行查询数据 (1)显示出表的数据 这 ...

  4. 3450: Tyvj1952 Easy

    3450: Tyvj1952 Easy Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 269  Solved: 198[Submit][Status] ...

  5. 复杂SQL代码实例

    DECLARE @begin DATETIME,@end DATETIME,@shanghutype INT, @beginshanghuarea BIGINT ,@endshanghuarea bi ...

  6. 如何使用Vue2做服务端渲染

    花费了一个月时间,终于在新养车之家项目中成功部署了vue2服务端渲染(SSR),并且使用上了Vuex 负责状态管理,首屏加载时间从之前4G网络下的1000ms,提升到了现在500-700ms之间,SS ...

  7. mybatis基础学习1---(配置文件和sql语句)

    1:配置文件(主要配置文件) 2:配置文件(引入) 3:sql语句解析: <mapper namespace="/"> <!-- 1 -->根据id查对象 ...

  8. 模拟一个shuffle

    之所以会想到写这么一个shuffle的例子,是因为一个需求:我需要把一个有序数组中的数据随机的打散.java代码如下, public void shuffle() { int[] arr = {1,2 ...

  9. JavaEE开发之Spring中的依赖注入与AOP

    上篇博客我们系统的聊了<JavaEE开发之基于Eclipse的环境搭建以及Maven Web App的创建>,并在之前的博客中我们聊了依赖注入的相关东西,并且使用Objective-C的R ...

  10. python安装paramiko需要的依赖

    yum install gcc libffi-devel python-devel openssl-devel -y