温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Oracle中怎么创建存储过程

发布时间:2021-06-24 15:53:25 来源:亿速云 阅读:224 作者:Leah 栏目:大数据

这期内容当中小编将会给大家带来有关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();
    }
}

Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。

Oracle存储过程可以有无参数存储过程和带参数存储过程。 
    一、无参程序过程语法

create or replace procedure NoParPro

as …… ;

begin

 …… ;

exception     //存储过程异常

 ……   ;

end;

    二、带参存储过程实例

create or replace procedure queryempname(sfindno emp.empno%type) as
       sName emp.ename%type;
       sjob emp.job%type;
begin
       ....
exception
          ....
end;

    三、 带参数存储过程含赋值方式

create or replace procedure runbyparmeters  (isal in emp.sal%type, 
                            sname out varchar,sjob in out varchar)
as icount number;
begin
      select count(*) into icount from emp where sal>isal and job=sjob;
      if icount=1 then
        ....
      else
        ....
      end if;
 exception
      when too_many_rows then
      DBMS_OUTPUT.PUT_LINE('返回值多于1行');
      when others then
      DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS过程中出错!');
 end;

  四、在Oracle中对存储过程的调用
  过程调用方式一

 declare
       realsal emp.sal%type;
       realname varchar(40);
       realjob varchar(40);
 begin   //存储过程调用开始
       realsal:=1100;
       realname:='';
       realjob:='CLERK';
       runbyparmeters(realsal,realname,realjob);     --必须按顺序
       DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);
 END;  //过程调用结束


  过程调用方式二

 declare
       realsal emp.sal%type;
       realname varchar(40);
       realjob varchar(40);
 begin    //过程调用开始
       realsal:=1100;
       realname:='';
       realjob:='CLERK';
       runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob);  --指定值对应变量顺序可变
       DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);
 END;  //过程调用结束 

上述就是小编为大家分享的Oracle中怎么创建存储过程了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI