<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Oracle存儲過程創(chuàng)建及調(diào)用

      在大型數(shù)據(jù)庫系統(tǒng)中,有兩個很重要作用的功能,那就是存儲過程和觸發(fā)器。在數(shù)據(jù)庫系統(tǒng)中無論是存儲過程還是觸發(fā)器,都是通過SQL 語句和控制流程語句的集合來完成的。相對來說,數(shù)據(jù)庫系統(tǒng)中的觸發(fā)器也是一種存儲過程。存儲過程在數(shù)據(jù)庫中運算時自動生成各種執(zhí)行方式,因此,大大提高了對其運行時的執(zhí)行速度。在大型數(shù)據(jù)庫系統(tǒng)如Oracle、SQL Server中都不僅提供了用戶自定義存儲過程的功能,同時也提供了許多可作為工具進行調(diào)用的系統(tǒng)自帶存儲過程。
         所謂存儲過程(Stored Procedure),就是一組用于完成特定數(shù)據(jù)庫功能的SQL 語句集,該SQL語句集經(jīng)過編譯后存儲在數(shù)據(jù)庫系統(tǒng)中。在使用時候,用戶通過指定已經(jīng)定義的存儲過程名字并給出相應(yīng)的存儲過程參數(shù)來調(diào)用并執(zhí)行它,從而完成一個或一系列的數(shù)據(jù)庫操作。
         由于J2EE體系一般建立大型的企業(yè)級應(yīng)用系統(tǒng),而一般都配備大型數(shù)據(jù)庫系統(tǒng)如Oracle或者SQL Server,在本文
      《JAVA與Oracle存儲過程》中將介紹JAVA跟Oracle存儲過程之間的相互應(yīng)用跟相互間的各種調(diào)用。
         一、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ù)存儲過程。 
      、無參程序過程語法

      1 create or replace procedure NoParPro
      2 as  ;
      3 begin
      4 ;
      5 exception     //存儲過程異常
      6     ;
      7 end;
      8 

              二、帶參存儲過程實例

       1 create or replace procedure queryempname(sfindno emp.empno%type) as
       2        sName emp.ename%type;
       3        sjob emp.job%type;
       4 begin
       5        ....
       7 exception
                ....
      14 end;
      15 

          三、 帶參數(shù)存儲過程含賦值方式
       1 create or replace procedure runbyparmeters  (isal in emp.sal%type,
                                  sname out 
      varchar,sjob in out varchar)
       2  as icount number;
       3  begin
       4       select count(*into icount from emp where sal>isal and job=sjob;
       5       if icount=1 then
       6         ....
       9       else
      10         ....
      12       end if;
      13  exception
      14       when too_many_rows then
      15       DBMS_OUTPUT.PUT_LINE('返回值多于1行');
      16       when others then
      17       DBMS_OUTPUT.PUT_LINE('在RUNBYPARMETERS過程中出錯!');
      18  end;
      19 

        四、在Oracle中對存儲過程的調(diào)用
        過程調(diào)用方式一
       1 declare
       2        realsal emp.sal%type;
       3        realname varchar(40);
       4        realjob varchar(40);
       5  begin   //存儲過程調(diào)用開始
       6        realsal:=1100;
       7        realname:='';
       8        realjob:='CLERK';
       9        runbyparmeters(realsal,realname,realjob);     --必須按順序
      10        DBMS_OUTPUT.PUT_LINE(REALNAME||'   '||REALJOB);
      11  END;  //過程調(diào)用結(jié)束
      12 

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

       

       至此,有關(guān)ORACLE的基本存儲過程以及對Oracle存儲過程的調(diào)用方式介紹完畢。
      posted @ 2010-07-12 22:47  chinaifne  閱讀(205378)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 国产在线无码不卡播放| 好硬好湿好爽再深一点动态图视频| 亚洲aⅴ无码专区在线观看q| 国产精品免费AⅤ片在线观看 | 熟女精品视频一区二区三区| 亚洲人妻av伦理| 激情内射亚洲一区二区三区| 综合偷自拍亚洲乱中文字幕| 国产高清在线男人的天堂| 99久久国产综合精品成人影院| 中文字幕无码免费久久| 麻豆一区二区三区蜜桃免费| 国产精品久久毛片| 亚洲首页一区任你躁xxxxx| 久久人妻av无码中文专区| 日韩高清视频 一区二区| 麻豆国产成人AV在线播放| 成人精品天堂一区二区三区| 日韩精品一区二区三区激情| 久久久久综合一本久道| 国产成AV人片久青草影院| 熟女亚洲综合精品伊人久久| 中文字幕人妻中出制服诱惑| 国内精品一区二区不卡| 太白县| 四虎影视库国产精品一区| 亚洲人成电影网站 久久影视| 临汾市| 亚洲综合91社区精品福利| 久久人人97超碰精品| 国产精品亚洲五月天高清| 午夜精品福利亚洲国产| 亚洲精品国产av成人网| 亚洲欧美日韩愉拍自拍美利坚| 女人喷液抽搐高潮视频| 国产老熟女一区二区三区| 日韩精品成人一区二区三区| 九九久久人妻精品一区色| 东京热一精品无码av| 97久久超碰亚洲视觉盛宴| 久久婷婷成人综合色|