溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Oracle中怎么創(chuàng)建存儲過程

發(fā)布時間:2021-06-24 15:53:25 來源:億速云 閱讀:212 作者:Leah 欄目:大數(shù)據(jù)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)Oracle中怎么創(chuàng)建存儲過程,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。


   一、JAVA調(diào)用Oracle存儲過程
   JAVA跟Oracle之間最常用的是JAVA調(diào)用Oracle的存儲過程,以下簡要說明下JAVA如何對Oracle存儲過程進行調(diào)用。
   Ⅰ、不帶輸出參數(shù)情況
      過程名稱為pro1,參數(shù)個數(shù)1個,數(shù)據(jù)類型為整形數(shù)據(jù)

import  java.sql. * ;
public   class  ProcedureNoArgs
{
    public   static   void  main(String args[])  throws  Exception
    {
        // 加載Oracle驅(qū)動  
        DriverManager.registerDriver( new  oracle.jdbc.driver.OracleDriver());
        // 獲得Oracle數(shù)據(jù)庫連接  
        Connection conn = DriverManager.getConnection( " jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd " ); 

        // 創(chuàng)建存儲過程的對象  
        CallableStatement c = conn.divpareCall( " {call pro1(?)} " );

        // 給Oracle存儲過程的參數(shù)設(shè)置值 ,將第一個參數(shù)的值設(shè)置成188  
        c.setInt( 1 , 188 );

        // 執(zhí)行Oracle存儲過程  
        c.execute();
        conn.close();
    }
}

     Ⅱ、帶輸出參數(shù)的情況
       過程名稱為pro2,參數(shù)個數(shù)2個,數(shù)據(jù)類型為整形數(shù)據(jù),返回值為整形類型

import java.sql.*;
public class ProcedureWithArgs
{
    public static void main(String args[]) throws Exception
    {
        //加載Oracle驅(qū)動 
        DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
        //獲得Oracle數(shù)據(jù)庫連接 
        Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@MyDbComputerNameOrIP:1521:ORCL", sUsr, sPwd "); 

        //創(chuàng)建Oracle存儲過程的對象,調(diào)用存儲過程 
        CallableStatement c=conn.divpareCall("{call pro2(?,?)}");

        //給Oracle存儲過程的參數(shù)設(shè)置值 ,將第一個參數(shù)的值設(shè)置成188 
        c.setInt(1,188);
        //注冊存儲過程的第二個參數(shù) 
        c.registerOutParameter(2,java.sql.Types.INTEGER);    //執(zhí)行Oracle存儲過程 
        c.execute();
        //得到存儲過程的輸出參數(shù)值并打印出來
        System.out.println (c.getInt(2));
        conn.close();
    }
}

Oracle存儲過程包含三部分:過程聲明,執(zhí)行過程部分,存儲過程異常。

Oracle存儲過程可以有無參數(shù)存儲過程和帶參數(shù)存儲過程。 
    一、無參程序過程語法

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;

    三、 帶參數(shù)存儲過程含賦值方式

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中對存儲過程的調(diào)用
  過程調(diào)用方式一

 declare
       realsal emp.sal%type;
       realname varchar(40);
       realjob varchar(40);
 begin   //存儲過程調(diào)用開始
       realsal:=1100;
       realname:='';
       realjob:='CLERK';
       runbyparmeters(realsal,realname,realjob);     --必須按順序
       DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);
 END;  //過程調(diào)用結(jié)束


  過程調(diào)用方式二

 declare
       realsal emp.sal%type;
       realname varchar(40);
       realjob varchar(40);
 begin    //過程調(diào)用開始
       realsal:=1100;
       realname:='';
       realjob:='CLERK';
       runbyparmeters(sname=>realname,isal=>realsal,sjob=>realjob);  --指定值對應(yīng)變量順序可變
       DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);
 END;  //過程調(diào)用結(jié)束 

上述就是小編為大家分享的Oracle中怎么創(chuàng)建存儲過程了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI