关闭

Oracle存储过程创建及调用

发表于:2012-10-18 10:17

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:oZhouHui    来源:51Testing软件测试网采编

  在大型数据库系统中,有两个很重要作用的功能,那就是存储过程和触发器。在数据库系统中无论是存储过程还是触发器,都是通过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个,数据类型为整形数据

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

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号