Oracle数据库基本操作 (五) —— 使用java调用存储过程
一、环境准备
登录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调用存储过程的更多相关文章
- clob字段的值插入和查询N种方法【包括java调用存储过程传入clob参数】
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import jav ...
- Oracle数据库基本操作(一) —— Oracle数据库体系结构介绍、DDL、DCL、DML
一.Oracle数据库介绍 1.基本介绍 Oracle数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的客户/服务器(CLIENT/SERVER)或B/ ...
- java调用存储过程(stored procedures)的HelloWorld例子
1.java调用存储过程(stored procedures)的HelloWorld程序 有点数据 库基础的人都知道.存储过程(stored procedures)和java没什么关系.它是一段纯粹的 ...
- Oracle数据库date类型与Java中Date的联系与转化
以下是对Java中的日期对象与Oracle中的日期之间的区别与联系做点说明,以期对大家有所帮助.new Date():分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒),就是系统当前 ...
- Oracle数据库基本操作(四) —— PLSQL编程
Procedure Language 实际上是Oracle对SQL语言的能力扩展,让SQL语言拥有了if条件判断,for循环等处理. 一.PLSQL基本语法 DECLARE -- 声明部分 变量名 变 ...
- 【转】java调用存储过程和函数
一.概述 如果想要执行存储过程,我们应该使用 CallableStatement 接口. CallableStatement 接口继承自PreparedStatement 接口.所以CallableS ...
- Java调用存储过程小结
学生在学习jdbc的时候,会问到怎么调用存储过程,现在将java调用oracle存储过程的示例总结如下.(关于调用sqlserver的存储过程将在下次进行小结请关注) 一:无返回值的存储过程 存储过程 ...
- Java 调用存储过程 返回结果集
这里使用Oracle数据库的thin连接. 下面是存储过程SQL 1 createorreplaceprocedure proc3(stid in student.stuid%type, stname ...
- java调用存储过程和函数
以对表test进行增,删,改,查进行说明:1.新建表test create table TEST ( TID NUMBER not null, TNAME VARCHAR2(32), TCODE VA ...
随机推荐
- Commands that may modify the data set are disabled, because this instance is configured to report errors during writes if RDB snapshotting fails (stop-writes-on-bgsave-error option)
今天运行Redis时发生错误,错误信息如下: org.springframework.dao.InvalidDataAccessApiUsageException: MISCONF Redis is ...
- (转)Javascript模块化编程(三):Require.js的用法
转自 ruanyifeng 系列目录: Javascript模块化编程(一):模块的写法 Javascript模块化编程(二):AMD规范 Javascript模块化编程(三):Require.js的 ...
- spring-boot-maven-plugin多模块install问题解决办法
一.问题描述: 项目分多个模块,open-eureka注册中心.open-provider服务提供者.open-common公共部分,provider依赖common.父pom使用spring-boo ...
- Eclipse中创建SpringBoot项目流程,及报错解决方案
1.下载最新的Eclipse(老版本的有可能不包含springBoot插件),然后在help中打开Eclipse MarketPlace,在Spring Marketplace 中搜索SpringBo ...
- sourceTree"重置提交"和"提交回滚"的区别
相信用过sourceTree的伙伴们都认识这两,但是不一定用过这两个功能,甚至是不能很好的把握它两的区别,根据自己最近亲身测试,总算是能小小的总结一下了 首先这儿假如,历史版本已经出现了1.2.3.4 ...
- 认识CSS中字体图标
前端之HTML,CSS(十一) 字体图标 使用文字做出小图标的效果并超越了小图标应用精灵图,使得图标变得灵活,减少了请求次数,优化了界面的性能.字体图标本身为矢量图. 字体图标的使用过程 1.UI设计 ...
- 造一个轮子然后安装到pypi上
之前写了一个爬虫的包,主要是根据自己写爬虫的情况总结一下. 因为每次都要重复写一些代码,所以提炼出来,类似一个框架的样子吧. 开始是放在自己的项目里引用,但如果换了一个项目,就得重新拷一遍,很麻烦. ...
- e的理解
1. e是一个重要的常数,但是我一直不知道,它的真正含义是什么. 它不像π.大家都知道,π代表了圆的周长与直径之比3.14159,可是如果我问你,e代表了什么.你能回答吗? 维基百科说: " ...
- 修改zend studio字体大小
第一步:进入设置窗口 windows -> preferences第二步:进入修改字体的选项卡. General -> Appearance -> Colors and ...
- Comet技术在Java Web中的应用
HTTP协议是互联网上大量信息交换的基础,其特点是,它是基于请求-响应模式的无状态的单向协议,即,必须由客户端发起一个请求建立连接,服务器接收请 求,把数据返回给客户端,然后释放连接.下一次,再由客户 ...