存储过程是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。今天,我们就开始学习java中调用oracle的存储过程。

java中调用oracle的存储过程

项目结构如下:

一、 在数据库创建存储过程的脚本,如果使用的是本地的oracle数据库,则需要开启服务:OracleOraDb11g_home1TNSListener和OracleServiceORCL。

存储过程实现:输入用户的工号,输出用户的名字、薪水和工作。

create or replace procedure queryempinfo(eno in number,
pename out varchar2,
psal out number,
pjob out varchar2)
as
begin
--得到该员工的姓名 月薪和职位
select ename, sal, job into pename, psal, pjob from emp where empno = eno;
end;

二、 在项目中引入oracle的jdbc的jar包,Procedure的代码如下:

package com.tomhu.procedure;import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;import oracle.jdbc.OracleTypes;public class Procedure {private Connection conn;private CallableStatement stat;private ResultSet rs;String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl";String driverName = "oracle.jdbc.driver.OracleDriver";String username = "scott";String password = "******";String sql = "call queryempinfo(?,?,?,?)";// 调用存储过程public void callProcedure() {try {Class.forName(driverName);conn = DriverManager.getConnection(url, username, password);stat = conn.prepareCall(sql);// 一个输入参数和三个输出参数stat.setInt(1, 7566);stat.registerOutParameter(2, OracleTypes.VARCHAR);stat.registerOutParameter(3, OracleTypes.NUMBER);stat.registerOutParameter(4, OracleTypes.VARCHAR);stat.execute();String name = stat.getString(2);int sal = stat.getInt(3);String job = stat.getString(4);System.out.println("name: " + name + ", sal: " + sal + ", job: " + job);} catch (Exception e) {e.printStackTrace();} finally {close(conn, stat, rs);}}// 关闭连接public void close(Connection conn, CallableStatement stat, ResultSet rs) {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();} finally {rs = null;}}if (stat != null) {try {stat.close();} catch (SQLException e) {e.printStackTrace();} finally {stat = null;}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();} finally {conn = null;}}}public static void main(String[] args) {new Procedure().callProcedure();}
}

三、 得到的输出结果:

name: JONES, sal: 2975, job: MANAGER

友情链接

jdbc的jar包: http://pan.baidu.com/s/1jHUTPRo

http://www.cnblogs.com/huhx/p/JavaProcedure.html

转载于:https://www.cnblogs.com/softidea/p/5510644.html

java基础----java调用oracle存储过程(转)相关推荐

  1. java调用存储过程 oracle_java调用oracle存储过程

    java调用oracle存储过程 java代码 Map param = new HashMap(); param.put("in_str", "1,2,3,4" ...

  2. oracle java存储过程返回值_java程序调用Oracle 存储过程 获取返回值(无返回,非结果集,结果集)...

    java程序调用Oracle 存储过程 获取返回值(无返回,非结 果集,结果集) oracle中procedure是不能有返回值的,要想返回值,就得有 输出参数,同样要想返回记录集,可以把游标类型作为 ...

  3. java c3p0 存储过程_JAVA Spring 连接池 调用 Oracle 存储过程的问题?

    求助,JAVA Spring 连接池 调用 Oracle 存储过程的问题?在Spring中配置了c3P0的连接池,在调用Oracle的存储过程时,报错[code]java.lang.ClassCast ...

  4. java调用oracle过程,JAVA调用ORACLE存储过程报错

    当前位置:我的异常网» Java Web开发 » JAVA调用ORACLE存储过程报错 JAVA调用ORACLE存储过程报错 www.myexceptions.net  网友分享于:2015-07-1 ...

  5. java调用oracle存储过程_java调用oracle存储过程详解

    之前给大家介绍了java代码调用存储过程,下面要给大家介绍的就是java当中调用oracle存储过程,一起来看看吧. 首先来看一下项目结构: 在数据库创建存储过程的脚本,假如,使用的是本地的oracl ...

  6. spring+springMvc+mybatis 调用oracle 存储过程

    最近在项目中遇到在mybatis中调用oracle存储过程的问题,网上各种查询,最终解决了问题,在我们项目中我只需要oracle 的存储过程返回一个字符串用来存入数据库作为表数据的主键, 接下来整理代 ...

  7. php oracle 存储过程 返回值,PHP 调用 Oracle 存储过程 之 查询

    在网上找了很久都没找到结果,今天看帮助,结合JAVA程序中的一个实例,写出了这个PHP调用Oracle存储过程的例子,也许有人会说PHP调用存储过程是很简单的,但在这里我还是想把这点小成就拿来共享一下 ...

  8. Java基础——Java多继承的三种实现方式

    Java基础--Java"多继承"的三种实现方式 Java语言本身只支持单继承(每个类只能有一个父类),但单继承的局限性很大,因此,可以通过以下的方式实现"多继承&quo ...

  9. Java基础----Java编程语言概述

    Java基础----Java编程语言概述 文章目录 Java基础----Java编程语言概述 Java编程语言概述 1-1 软件开发介绍 1.1软件开发介绍 1.2 常用命令 1-2 计算机编程语言介 ...

  10. JAVA基础--JAVA SE(知识点总结 Ⅴ )

    前面内容请见: JAVA基础–JAVA SE(知识点总结 Ⅰ ) JAVA基础–JAVA SE(知识点总结 Ⅱ ) JAVA基础–JAVA SE(知识点总结 Ⅲ ) JAVA基础–JAVA SE(知识 ...

最新文章

  1. centos查看历史指令记录_CentOS 系统通过 curlftpfs 挂载 FTP 服务器为本地磁盘
  2. 如何快速的给你的项目添加icon图标
  3. IDEA IntelliJ 如何设置web项目的热部署
  4. Java网络编程笔记6
  5. 【移动开发】Android应用开发者应该知道的东西
  6. r shiny app的学习和使用,这个我认为是作为大学生最适合的入门网页开发工具!!!
  7. python 脚本学习(二)
  8. avocado自动化测试框架
  9. 紫书 习题 8-15 UVa 1617 (贪心)
  10. groovy 和 java的区别_Groovy和JAVA的区别
  11. NLP简报(Issue#1)
  12. Apollo(阿波罗)是携程框架部门研发的分布式配置中心,ubuntu本机安装
  13. 十、基于FPGA的PCIE协议介绍(一)
  14. PMP培训一般是多久?怎么收费?
  15. JDK的下载及其安装
  16. MAC word2015 插入罗马字母
  17. 爱尔兰咖啡(作者:痞子蔡)
  18. freemarker导出Word文档并在其中插入图片
  19. 码农的自我修养 - 指令集架构种类
  20. live server

热门文章

  1. MLN Alchemy
  2. HDU 4335 What is N?(指数循环节)题解
  3. c/c++ linux 进程 fork wait函数
  4. Linux服务-搭建NFS
  5. ExtAspNet应用技巧(七) - ViewState优化
  6. 一个嵌入Flash的Gadget小程序
  7. R语言:data.table语句批量生成变量
  8. SaltStact自动化运维工具03
  9. Win2008r2 由ESXi 转换到 HyperV的处理过程
  10. TP5报错variable type error: array