编程开发之--Oracle数据库--存储过程和存储函数(2)
上一小结我们简单介绍了存储过程和存储函数,对存储过程和存储函数有了一个基本的了解,接下来介绍在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)相关推荐
- 编程开发之--Oracle数据库--存储过程在out参数中使用光标(3)
在本系列学习随笔中的第2节我们留下了2个问题,我们现在讨论在out参数中使用光标. 1.要在out参数中使用光标,我们需要申明一个包的结构,包的结构分为包头和包体,包头只负责申明,包体只负责实现.包头 ...
- 数据库存储过程与存储函数
数据库存储过程与存储函数_伱糸淂忄-CSDN博客 MySQL数据库之存储过程与存储函数 - 奥辰 - 博客园 1.数据库存储过程与存储函数 存储过程是一组为了完成特定功能的SQL语句集,经过编译后存储 ...
- oracle as 不可以省略,Oracle:存储过程,存储函数
什么是存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 这个子程序是用PL/SQL写的.可以用Java程序调用,就是完成特定功能的子程序. 用create pro ...
- Oracle的存储过程和存储函数
存储过程和存储函数:指存储在数据库中供所有用户程序调用的子程序叫做存储过程.存储函数. 他们也是数据库的对象,类似于表.视图.索引.序列.同义词等. 存储函数可以用return返回值,而存储过程不可以 ...
- 数据库存储过程及存储函数
存储过程 在java中经常用封装的思想来提高代码的重用性,在java中为什么要定义方法?原因是有一个功能是需要在不同的地方多次使用的,如果在每一个需要调用的地方都写一遍会造成代码量很大,所以我们把他抽 ...
- jdbc oracle 函数,Oracle系列:(33)JDBC访问Oracle的存储过程和存储函数
1.存储过程 1.1.准备SQL-- 定义存储过程 create or replace procedure get_rax(salary in number,rax out number) as -- ...
- 用vc对oracle数据库编程,用VC开发基于ORACLE数据库应用程序
用VC开发基于ORACLE数据库应用程序 徐智文 [期刊名称]<包钢科技> [年(卷),期]2006(032)001 [摘要]VC++是一个强大的客户端开发工具,可以很方便地开发出基于PR ...
- 轻松学编程--轻松学Oracle数据库(附光盘)
查看书籍详细信息: 轻松学编程--轻松学Oracle数据库(附光盘) 编辑推荐 <轻松学Oracle数据库>本书中引用了大量的动手实践案例来讲解Oracle数据库中的各种知识,使读者能够更 ...
- 【宋红康 MySQL数据库】【基础版】【15】存储过程与存储函数
文章目录 存储过程与存储函数 定义存储过程与存储函数 对比存储函数和存储过程 存储过程概述 理解 分类 创建存储过程 语法分析 代码举例 调用存储过程 调用格式 代码举例 如何调试 存储函数的使用 语 ...
最新文章
- 复习es6-解构赋值+字符串的扩展
- 解析C语言中的sizeof
- linux 替换内核 img,查看更改linux内核initrd.img-Go语言中文社区
- 你了解欧拉回路吗?(附Java实现代码)
- filter函数的用法_JavaScript中forEach和filter的用法和原理
- pixhawk commander--navigator--modules之间的联系
- 前端学习(2748):uniapp创建项目和演示
- 第53课 化功大法 《小学生C++趣味编程》
- 实战演练:通过伪列、虚拟列实现SQL优化
- Django 博客开发教程 6 - 真正的 Django 博客首页视图
- jQuery操作CSS属性的相关方法
- java 计算两个日期之间的月份_Java 8计算两个日期之间的月份
- 软件测试查漏补缺(一)——驱动开发、系统测试、测试工具
- 超详细markdown语法和typora教程
- 中国民营企业的8+10种死法
- python画哪吒_哪吒票房逼近30亿,python爬取哪吒短评分析
- Codeforces Round #628 (Div. 2) C. Ehab and Path-etic MEXs(贪心+思维)
- 你安全吗?丨黑客掌握的翻垃圾技术有哪些?大家要警惕!
- HTML+CSS的简单使用(代码)
- 华科计算机组成原理 单总线CPU设计 定长变长现代时序中断 指令周期3级时序 (LogisimEducoder)