上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在java程序中如何调用我们创建的存储过程和存储函数

1、在应用程序中调用我们的存储过程

创建一个简单的Java工程,如:TestOracle,在项目中新建lib文件夹,并拷贝ojdbc14.jar,添加到系统路径中,目录结构如下:

在项目中创建一个用于连接数据库以及与数据库执行交流的工具类JDBCUtils.java

package demo.utils;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;public class JDBCUtils {private static String driver="oracle.jdbc.OracleDriver";private static String url="jdbc:oracle:thin:@localhost:1521:orcl";private static String user="scott";private static String password="scott";//注册数据库驱动static {try {Class.forName(driver);
//          DriverManager.registerDriver(driver);} catch (Exception e) {throw new ExceptionInInitializerError(e);}}//获取数据库连接public static Connection getConnection() {try {return DriverManager.getConnection(url, user, password);} catch (Exception e) {e.printStackTrace();}return null;}//释放数据库资源public static void release(Connection conn,Statement st,ResultSet rs) {if(rs!=null) {try {rs.close();} catch (Exception e) {e.printStackTrace();}finally {rs=null;}}if(st!=null) {try {st.close();} catch (Exception e) {e.printStackTrace();}finally {st=null;}}if(conn!=null) {try {conn.close();} catch (Exception e) {e.printStackTrace();}finally {conn=null;}}}
}

  创建我们的测试包,在包中创建我们的测试类TestProcedure.java

package demo.oracle;import java.sql.CallableStatement;
import java.sql.Connection;import org.junit.Test;import demo.utils.JDBCUtils;
import oracle.jdbc.internal.OracleTypes;public class TestProcedure {/*** create or replace PROCEDURE queryempinform(eno in number,pename out varchar2,psal out number,pjob out varchar2)*/@Testpublic void testProcedure() {//{call <procedure-name>[(<arg1>,<arg2>,...)]}String sql="{call queryempinform(?,?,?,?)}";Connection conn=null;CallableStatement call=null;try {//得到一个连接conn=JDBCUtils.getConnection();//通过连接创建出statmentcall=conn.prepareCall(sql);//对in参数进行赋值call.setInt(1, 7839);//对out参数进行申明call.registerOutParameter(2, OracleTypes.VARCHAR);call.registerOutParameter(3, OracleTypes.NUMBER);call.registerOutParameter(4, OracleTypes.VARCHAR);//设置文笔之后,开始我们的存储过程的调用call.execute();//取出结果String name=call.getString(2);double sal=call.getDouble(3);String job=call.getString(4);System.out.println(name+"\t"+sal+"\t"+job);} catch (Exception e) {//遇到异常将其打印到控制台输出e.printStackTrace();}finally {//释放数据库资源JDBCUtils.release(conn, call, null);}}
}

  启动我们的单元测试,运行结果:

2、在应用程序中调用我们的存储函数

在测试包中创建我们的测试类TestFunction.java

package demo.oracle;import java.sql.CallableStatement;
import java.sql.Connection;import org.junit.Test;import demo.utils.JDBCUtils;
import oracle.jdbc.internal.OracleTypes;public class TestFunction {/*** create or replace FUNCTION queryempincome(eno in number)return number*/@Testpublic void testFunction() {//{?=call <procedure-name>[(<arg1>,<arg2>,...)]}String sql="{?=call queryempincome(?)}";Connection conn=null;CallableStatement call=null;try {//得到数据库连接conn=JDBCUtils.getConnection();//基于连接得到statmentcall=conn.prepareCall(sql);//对in参数赋值call.setInt(2, 7839);//对out参数进行申明call.registerOutParameter(1, OracleTypes.NUMBER);//执行我们存储函数的调用call.execute();//取得我们的结果double income=call.getDouble(1);System.out.println("该员工的年收入是:"+income);} catch (Exception e) {e.printStackTrace();}finally {JDBCUtils.release(conn, call, null);}}
}

  启动我们的单元测试,运行结果:

转载于:https://www.cnblogs.com/ZeroMZ/p/9196836.html

编程开发之--Oracle数据库--存储过程和存储函数(2)相关推荐

  1. 编程开发之--Oracle数据库--存储过程在out参数中使用光标(3)

    在本系列学习随笔中的第2节我们留下了2个问题,我们现在讨论在out参数中使用光标. 1.要在out参数中使用光标,我们需要申明一个包的结构,包的结构分为包头和包体,包头只负责申明,包体只负责实现.包头 ...

  2. 数据库存储过程与存储函数

    数据库存储过程与存储函数_伱糸淂忄-CSDN博客 MySQL数据库之存储过程与存储函数 - 奥辰 - 博客园 1.数据库存储过程与存储函数 存储过程是一组为了完成特定功能的SQL语句集,经过编译后存储 ...

  3. oracle as 不可以省略,Oracle:存储过程,存储函数

    什么是存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 这个子程序是用PL/SQL写的.可以用Java程序调用,就是完成特定功能的子程序. 用create pro ...

  4. Oracle的存储过程和存储函数

    存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 他们也是数据库的对象,类似于表.视图.索引.序列.同义词等. 存储函数可以用return返回值,而存储过程不可以 ...

  5. 数据库存储过程及存储函数

    存储过程 在java中经常用封装的思想来提高代码的重用性,在java中为什么要定义方法?原因是有一个功能是需要在不同的地方多次使用的,如果在每一个需要调用的地方都写一遍会造成代码量很大,所以我们把他抽 ...

  6. jdbc oracle 函数,Oracle系列:(33)JDBC访问Oracle的存储过程和存储函数

    1.存储过程 1.1.准备SQL-- 定义存储过程 create or replace procedure get_rax(salary in number,rax out number) as -- ...

  7. 用vc对oracle数据库编程,用VC开发基于ORACLE数据库应用程序

    用VC开发基于ORACLE数据库应用程序 徐智文 [期刊名称]<包钢科技> [年(卷),期]2006(032)001 [摘要]VC++是一个强大的客户端开发工具,可以很方便地开发出基于PR ...

  8. 轻松学编程--轻松学Oracle数据库(附光盘)

    查看书籍详细信息: 轻松学编程--轻松学Oracle数据库(附光盘) 编辑推荐 <轻松学Oracle数据库>本书中引用了大量的动手实践案例来讲解Oracle数据库中的各种知识,使读者能够更 ...

  9. 【宋红康 MySQL数据库】【基础版】【15】存储过程与存储函数

    文章目录 存储过程与存储函数 定义存储过程与存储函数 对比存储函数和存储过程 存储过程概述 理解 分类 创建存储过程 语法分析 代码举例 调用存储过程 调用格式 代码举例 如何调试 存储函数的使用 语 ...

最新文章

  1. 复习es6-解构赋值+字符串的扩展
  2. 解析C语言中的sizeof
  3. linux 替换内核 img,查看更改linux内核initrd.img-Go语言中文社区
  4. 你了解欧拉回路吗?(附Java实现代码)
  5. filter函数的用法_JavaScript中forEach和filter的用法和原理
  6. pixhawk commander--navigator--modules之间的联系
  7. 前端学习(2748):uniapp创建项目和演示
  8. 第53课 化功大法 《小学生C++趣味编程》
  9. 实战演练:通过伪列、虚拟列实现SQL优化
  10. Django 博客开发教程 6 - 真正的 Django 博客首页视图
  11. jQuery操作CSS属性的相关方法
  12. java 计算两个日期之间的月份_Java 8计算两个日期之间的月份
  13. 软件测试查漏补缺(一)——驱动开发、系统测试、测试工具
  14. 超详细markdown语法和typora教程
  15. 中国民营企业的8+10种死法
  16. python画哪吒_哪吒票房逼近30亿,python爬取哪吒短评分析
  17. Codeforces Round #628 (Div. 2) C. Ehab and Path-etic MEXs(贪心+思维)
  18. 你安全吗?丨黑客掌握的翻垃圾技术有哪些?大家要警惕!
  19. HTML+CSS的简单使用(代码)
  20. 华科计算机组成原理 单总线CPU设计 定长变长现代时序中断 指令周期3级时序 (LogisimEducoder)

热门文章

  1. wios设置证书登陆
  2. (转载)Struts2源码粗略分析四:理解xwork工作原理
  3. 如何让类对象只在栈(堆)上分配空间?(转)
  4. 关于使用REST API
  5. SQL FOREIGN KEY 约束
  6. Linux 文本界面转到图形界面
  7. [转]几句不可不看的经典人生语句
  8. java学习笔记(四)----对象、数组作为参数传递,静态变量、静态方法的使用,内部类,使用文档注释
  9. nginx重定向到其他url方法_高级开发必须掌握Nginx之四,if、set、return
  10. hdu4907 水dp 或者set