博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA调用Oracle存储过程
阅读量:5934 次
发布时间:2019-06-19

本文共 1961 字,大约阅读时间需要 6 分钟。

 在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器。在数据库系统中无论是存储过程还 是触发器,都是通过SQL 语句和控制流程语句的集合来完成的。相对来说,数据库系统中的触发器也是一种存储过程。存储过程在数据库中运算时自动生成各种执行方式,因此,大大提高了 对其运行时的执行速度。在大型数据库系统如Oracle、SQL Server中都不仅提供了用户自定义存储过程的功能,同时也提供了许多可作为工具进行调用的系统自带存储过程。

   所谓存储过程 (Stored Procedure),就是一组用于完成特定数据库功能的SQL 语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完 成一个或一系列的数据库操作。
   由于J2EE体系一般建立大型的企业级应用系统,而一般都配备大型数据库系统如Oracle或者SQL Server,在本文中将介绍JAVA跟之间的相互应用跟相互间的各种调用。
   一、JAVA调用Oracle存储过程
   JAVA跟Oracle之间最常用的是JAVA调用Oracle的存储过程,以下简要说明下JAVA如何对进行调用。
   Ⅰ、不带输出参数情况
      过程名称为pro1参数个数1个数据类型为整形数据

import  java.sql. * ; public   class  ProcedureNoArgs { public   static   void  main(String args[])  throws  Exception {    // 加载Oracle驱动    DriverManager.registerDriver( new  oracle.jdbc.driver.OracleDriver());    // 获得Oracle数据库连接    Connection conn = DriverManager.getConnection( " jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd " );    // 创建存储过程的对象    CallableStatement c = conn.divpareCall( " {call pro1(?)} " );         // 给Oracle存储过程的参数设置值 ,将第一个参数的值设置成188    c.setInt( 1 , 188 );          // 执行Oracle存储过程    c.execute();    conn.close();   }  }

 

   Ⅱ、带输出参数的情况
   过程名称为pro2,参数个数2个,数据类型为整形数据,返回值为整形类型

import java.sql.*; public class ProcedureWithArgs  { public static void main(String args[]) throws Exception {    //加载Oracle驱动    DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());    //获得Oracle数据库连接    Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd ");     //创建Oracle存储过程的对象,调用存储过程     CallableStatement c=conn.divpareCall("{call pro2(?,?)}");          //给Oracle存储过程的参数设置值 ,将第一个参数的值设置成188     c.setInt(1,188);     //注册存储过程的第二个参数       c.registerOutParameter(2,java.sql.Types.INTEGER);    //执行Oracle存储过程     c.execute();       //得到存储过程的输出参数值并打印出来      System.out.println (c.getInt(2));     conn.close();   } }

   以上即是在JAVA中调用的最简单的实例,接下来将介绍有关JAVA跟的其他方面内容。

采集
采集

转载于:https://www.cnblogs.com/Lightning-Kid/p/3935067.html

你可能感兴趣的文章
Qutarz动态多任务定时功能实现
查看>>
设计模型之原型模型与cloneable接口(深度克隆与浅度克隆区别)
查看>>
FL Studio导入MIDI文件方法
查看>>
CentOS 7 中使用NTP进行时间同步
查看>>
MySQL 导入数据
查看>>
使用python读取mysql数据库并进行数据的操作
查看>>
GitHub:我们是这样弃用jQuery的
查看>>
隐藏输入法和弹出输入法
查看>>
Linux命令之tar:文件打包(备份)、压缩、解压
查看>>
CI框架不定期更新
查看>>
Spring源码解析-AutowiredAnnotationBeanPostProcessor
查看>>
list.add并不是copy
查看>>
什么是SSL预证书?
查看>>
java中的printf方法
查看>>
web项目中idea中jsp被编译后的class与java文件在哪里?
查看>>
Python的书写规则
查看>>
深入分析golang多值返回以及闭包的实现
查看>>
简单了解云安全内容
查看>>
Flask学习
查看>>
AngularDart4.0 英雄之旅-教程-08HTTP
查看>>