Codooba
          JCenter
          posts - 20,comments - 9,trackbacks - 0

          商業(yè)規(guī)則和業(yè)務邏輯可以通過程序存儲在oracle中,這個程序就是存儲過程。

          存儲過程是SQL, PL/SQL, JAVA 語句的組合, 它使你能將執(zhí)行商業(yè)規(guī)則的代碼從從你的應用程序中移動到數(shù)據(jù)庫。這樣的結(jié)果就是,代碼存儲一次但是能夠被多個程序使用。

          要創(chuàng)建一個 過程對象(procedural object),必須有 CREATE PROCEDURE 系統(tǒng)權限。如果這個過程對象需要被其他的用戶schema 使用,那么你必須有 CREATE ANY PROCEDURE 權限。

          執(zhí)行 procedure 的時候,可能需要excute權限。或者EXCUTE ANY PROCEDURE 權限。

          如果單獨賦予權限,如下例所示:  grant  execute on MY_PROCEDURE  to Jelly

          調(diào)用一個存儲過程的例子: execute MY_PROCEDURE( 'ONE PARAMETER');

          PROCEDURE 和 FUNCTION 的區(qū)別。 function有返回值,并且可以直接在Query中引用function和或者使用function的返回值。

           PACKAGE 是function,procedure,variables 和sql 語句的組合。package允許多個procedure使用同一個變量和游標。

          創(chuàng)建 procedure的語法:

          CREATE [ OR REPLACE ] PROCEDURE [ schema.]procedure
            [(argument [IN | OUT | IN OUT ] [NO COPY] datatype
              [, argument [IN | OUT | IN OUT ] [NO COPY] datatype]...
            )]
          [ authid { current_user | definer }]
          { is | as } { pl/sql_subprogram_body |
          language { java name 'String' | c [ name, name] library lib_name
          }]

          sql 代碼
          1. CREATE PROCEDURE sam.credit (acc_no IN NUMBER, amount IN NUMBER) AS    
          2.    BEGIN  
          3.       UPDATE accounts    
          4.       SET balance = balance + amount    
          5.       WHERE account_id = acc_no;    
          6.    END;  

           

          可以使用 create or replace procedure 語句, 這個語句的用處在于,你之前賦予的excute權限都將被保留。

          IN, OUT, IN OUT 用來修飾參數(shù)。IN 表示這個變量必須被調(diào)用者賦值然后傳入到PROCEDURE進行處理。OUT 表示PRCEDURE 通過這個變量將值傳回給調(diào)用者。IN OUT 則是這兩種的組合。

          authid代表兩種權限: 定義者權限(difiner right 默認),執(zhí)行者權限(invoker right)。定義者權限說明這個procedure中涉及的表,視圖等對象所需要的權限只要定義者擁有權限的話就可以訪問。執(zhí)行者權限則需要調(diào)用這個procedure的用戶擁有相關表和對象的權限。

          posted on 2007-07-02 15:46 Zhangwenlong 閱讀(809) 評論(1)  編輯  收藏

          FeedBack:
          # re: oracle存儲過程基礎知識
          2016-07-01 14:45 | 1`2
          4324324  回復  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 上杭县| 岱山县| 乐陵市| 铁力市| 天柱县| 金寨县| 宁武县| 石棉县| 紫金县| 鄂托克前旗| 庆元县| 苍南县| 兖州市| 永清县| 湘潭市| 礼泉县| 精河县| 合山市| 永善县| 芜湖市| 化德县| 佛学| 江川县| 上饶市| 兖州市| 游戏| 黔江区| 崇左市| 山阴县| 雅江县| 江门市| 永昌县| 应用必备| 阳山县| 页游| 井冈山市| 宁波市| 丹棱县| 凯里市| 宕昌县| 佛学|