设为首页 收藏本站
查看: 525|回复: 0

[经验分享] JAVA调用Oracle存储过程(转)

[复制链接]

尚未签到

发表于 2016-6-23 09:04:12 | 显示全部楼层 |阅读模式
在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器。在数据库系统中无论是存储过程还是触发器,都是通过SQL 语句和控制流程语句的集合来完成的。相对来说,数据库系统中的触发器也是一种存储过程。存储过程在数据库中运算时自动生成各种执行方式,因此,大大提高了对其运行时的执行速度。在大型数据库系统如Oracle、SQL Server中都不仅提供了用户自定义存储过程的功能,同时也提供了许多可作为工具进行调用的系统自带存储过程。
   所谓存储过程(Stored Procedure),就是一组用于完成特定数据库功能的SQL 语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的存储过程名字并给出相应的存储过程参数来调用并执行它,从而完成一个或一系列的数据库操作。
   由于J2EE体系一般建立大型的企业级应用系统,而一般都配备大型数据库系统如Oracle或者SQL Server,在本文《JAVA的Oracle存储过程》中将介绍JAVA跟Oracle存储过程之间的相互应用跟相互间的各种调用。
   一、JAVA调用Oracle存储过程
   JAVA跟Oracle之间最常用的是JAVA调用Oracle的存储过程,以下简要说明下JAVA如何对Oracle存储过程进行调用。
   Ⅰ、不带输出参数情况
      过程名称为pro1,参数个数1个,数据类型为整形数据

Java代码
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();   
}     
}   

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个,数据类型为整形数据,返回值为整形类型


Java代码
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();   
}   
}

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-233931-1-1.html 上篇帖子: oracle 分析函数 下篇帖子: 10g Oracle文件及目录介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表