一、环境准备

 登录Oracle数据库scott账号,利用emp进行操作。

1、创建 proc_getyearsal 存储过程

 -- 获取指定员工年薪
create or replace procedure proc_getyearsal(vempno in number,vyearsal out number)
is begin
select sal*12+nvl(comm,0) into vyearsal from emp where empno=vempno;
end;

2、创建 proc_gettemps 存储过程(游标)

 create or replace procedure proc_gettemps(vemps out sys_refcursor)
is
BEGIN
open vemps for select * from emp where deptno = 20;
end;

3、导入数据库驱动包 —— ojdbc14.jar

二、java代码示例

 package com.pri.test;

 public class TestProcedure {

   /*
    java调用存储过程模板(一)
    获取单值操作
  */
@Test
public void test01() throws Exception {
//1.注册驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.获取连接
String url = "jdbc:oracle:thin:@10.211.55.29:1521/orcl";
String user = "zhangsan";
String password = "zs123";
Connection conn = DriverManager.getConnection(url, user, password);
//3.获取执行SQL的对象
String sql = "{call proc_getyearsal(?,?)}";
CallableStatement callableStatement = conn.prepareCall(sql);
//3.1 设置输出参数
callableStatement.setInt(1,7369);
//3.2 注册输出类型
callableStatement.registerOutParameter(2, Types.DOUBLE);
//4.执行SQL
callableStatement.execute();
//5.执行结果
double yearsal = callableStatement.getDouble(2);
System.out.println("年薪:"+yearsal);
//6.释放资源
callableStatement.close();
conn.close();
}
  
  /*
   java调用存储过程模板(二)
    多行记录(游标)操作
  */
@Test
public void test03() throws Exception {
//1.注册驱动
Class.forName("oracle.jdbc.driver.OracleDriver");
//2.获取连接
String url = "jdbc:oracle:thin:@10.211.55.29:1521/orcl";
String user = "zhangsan";
String password = "zs123";
Connection conn = DriverManager.getConnection(url, user, password);
//3.获取执行SQL的对象
String sql = "{call proc_gettemps(?)}";
CallableStatement callableStatement = conn.prepareCall(sql);
//3.1 注册输出类型
callableStatement.registerOutParameter(1, OracleTypes.CURSOR);
//4.执行SQL
callableStatement.execute();
//5.获取结果
System.out.println(callableStatement.getClass().getName());
// T4CCallableStatent call2 = () callableStatement;
OracleCallableStatement call2 = (OracleCallableStatement) callableStatement;
ResultSet rs = call2.getCursor(1); while(rs.next()){
System.out.println(rs.getObject("empno"));
System.out.println(rs.getObject("ename"));
System.out.println(rs.getObject("sal"));
System.out.println("------------------------");
}
//6.释放资源
rs.close();
callableStatement.close();
conn.close();
} }

Oracle数据库基本操作 (五) —— 使用java调用存储过程的更多相关文章

  1. clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】

    import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import jav ...

  2. Oracle数据库基本操作(一) —— Oracle数据库体系结构介绍、DDL、DCL、DML

    一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/ ...

  3. java调用存储过程(stored procedures)的HelloWorld例子

    1.java调用存储过程(stored procedures)的HelloWorld程序 有点数据 库基础的人都知道.存储过程(stored procedures)和java没什么关系.它是一段纯粹的 ...

  4. Oracle数据库date类型与Java中Date的联系与转化

    以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助.new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前 ...

  5. Oracle数据库基本操作(四) —— PLSQL编程

    Procedure Language 实际上是Oracle对SQL语言的能力扩展,让SQL语言拥有了if条件判断,for循环等处理. 一.PLSQL基本语法 DECLARE -- 声明部分 变量名 变 ...

  6. 【转】java调用存储过程和函数

    一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...

  7. Java调用存储过程小结

    学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下.(关于调用sqlserver的存储过程将在下次进行小结请关注) 一:无返回值的存储过程 存储过程 ...

  8. Java 调用存储过程 返回结果集

    这里使用Oracle数据库的thin连接. 下面是存储过程SQL 1 createorreplaceprocedure proc3(stid in student.stuid%type, stname ...

  9. java调用存储过程和函数

    以对表test进行增,删,改,查进行说明:1.新建表test create table TEST ( TID NUMBER not null, TNAME VARCHAR2(32), TCODE VA ...

随机推荐

  1. Bootstrap Table使用方法详解

    http://www.jb51.net/article/89573.htm bootstrap-table使用总结 bootstrap-table是在bootstrap-table的基础上写出来的,专 ...

  2. 架构师养成记--23.sigar使用实例

    作用是检测机器的硬件环境 注意在jdk的bin目录下加上sigar的lib目录中的文件 import java.net.InetAddress; import java.net.UnknownHost ...

  3. 功能一: 数据库访问DAO层方法定义

    功能1: 今天到现在为止 实战课程的访问量 yyyyMMdd courseID 使用数据库来进行存储我们的统计结果 Spark Streaming把统计结果写入到数据库里面 可视化前端根据: yyyy ...

  4. [转] 遇见 TiDB - 分布式关系数据库

    [From] http://kuaibao.qq.com/s/20180510G0UFL000?refer=cp_1026 最近TiDB掀起了一波分布式数据库的热潮,公司也在着手准备TiDB的落地工作 ...

  5. (7.0 version)当销售单中包含service或phantom类型的产品时,销售单不能完成的原因分析及解决方案

    首先说一下service类型的产品,由于该类型的产品不需要发货,所以当在销售订单确认了后,销售单直接变成了等待开票的状态,但当开票的流程结束后,订单却还是停在销售单的状态上,该问题的解决方案是安装Ta ...

  6. redux设计到源码 --- 美团点评技术团队(转)

    https://tech.meituan.com/redux-design-code.html

  7. android开发中的BaseAdapter之理解(引用自网络,总结的很好,谢谢)

    android中的适配器(Adapter)是数据与视图(View)之间的桥梁,用于对要显示的数据进行处理,并通过绑定到组件进行数据的显示. BaseAdapter是Android应用程序中经常用到的基 ...

  8. Spring由于web配置导致的spring配置文件找不到的问题的解决方案

    在把某项技术整合到Spring中的时候,我们时常会发现报如下错误: org.springframework.beans.factory.BeanCreationException: Error cre ...

  9. ubuntu手动安装PhantomJS

    1.切换到主目录:cd ~2.下载安装包:https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-Linux-x86_64.ta ...

  10. Ubuntu14.04下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)

    不多说,直接上干货! 写在前面的话 (1) 最近一段时间,因担任我团队实验室的大数据环境集群真实物理机器工作,至此,本人秉持负责.认真和细心的态度,先分别在虚拟机上模拟搭建ambari(基于CentO ...