亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

ORACLE FUNCTION函數中DETERMINISTIC測試

發布時間:2020-08-15 14:22:55 來源:ITPUB博客 閱讀:199 作者:ayumie 欄目:建站服務器
如果函數經常對于上述情況產生確定的記錄,可以在
   函數聲明中用DETERMINISTIC,這樣ORACLE會自動在內存中緩存這些記錄集,如果不確定,
   產生的結果就會不確定了
          1,概念及含義
              1,語法
                  CREATE OR REPLACE FUNCTION SCHEMA.FUNTION_NAME
                  (ARGUMENT IN NOC0PY DATATYPE)
                  RETURN DATETYPE
                  DETERMINISTIC
                  IS
                  BEGIN
                  END;
               2,指定DETERMINISTIC用于,對于調用多次同一參數相同值的過程,返回相同的結果時
               3,如果你在基于函數的索引相關的表達式或者對REFRESH FAST及ENABLE QUERY REWRITE的物化視圖相關的查詢
                 ,必須要指定DETERMINISTIC關鍵字。
               4,如果以后變更了上述表達式的定義,必須手工重建物化視圖或者基于函數的索引
               5,如果一個函數使用包變量,或者訪問數據庫的方能會影響函數的結果集,則不要用DETERMINISTIC
               6,使用DETERMINISTIC語句的語義規則,此處皆指是定義或聲明而非使用
                     1,可以在最頂級的子程序中,指包中
                     2,可以在包規范即包級的子程序中,但不能在包體中;指包的子程序聲明中
                     3,不能在一個私有子程序中(子程序:另一個子程序內部或一個包體內部),即包體或另一個子程序中的子程序
                     4,一個有DETERMINISTIC的子程序能調用另一個子程序,
                        不管被調用的子程序是否聲明DETERMINISTIC
          2,示例
              1,CREATE OR REPLACE FUNCTION text_length(a CLOB)
                 RETURN NUMBER DETERMINISTIC IS
                 BEGIN
                    RETURN DBMS_LOB.GETLENGTH(a);
                 END;
 
              2,自己編寫的示例
                  1,SQL> desc t_deterministic;
                     名稱                                      是否為空? 類型
                     ----------------------------------------- -------- -----------------------
                   
                     A                                                  CHAR(2)
                   
                   
                    SQL> select * from t_deterministic;
                   
                    A
                    --
                    12
                    ab
             
             
                   2,  create or replace function func_deterministic(a_len t_deterministic.a%type
                      2  return number deterministic is
                      3  v_len number;
                      4  begin
                      5  select length(a) into v_len from t_deterministic where a=a_len;
                      6  return v_len;
                      7* end;
                    SQL> /
                   
                    函數已創建。
                   
                    3,SQL> select func_deterministic('ab') from t_deterministic;--查詢是NULL
                   
                    FUNC_DETERMINISTIC('AB')
                    ------------------------
                   
                   
                    SQL> select func_deterministic('12') from t_deterministic;--查詢有結果
                   
                    FUNC_DETERMINISTIC('12')
                    ------------------------
                                          12
                   
                   
                   
          3,加與不加它的區別
          4,哪些語句可以有DETERMINISTIC,此處指FUNCTION,PACKAGE,PACKAGE BODY,PROCEDURE,VIEW
                1,create procedure過程中不能有DETERMINISTIC
                2,CRREATE OR REPLACE PACKAGE的語法參考:Oracle? Database PL/SQL User's Guide and Reference
                     測試包規范
                        --經測試可在包規范中創建有DETERMINISTIC的函數聲明
                       CREATE OR REPLACE PACKAGE PKG_DETERMINISTIC
                       AS
                        FUNCTION FUNC_TEST
                         RETURN NUMBER DETERMINISTIC;
                        
                       END;
                      
                       --續上測試,包體也可以創建有DETERMINISTIC的函數聲明
                       CREATE OR REPLACE PACKAGE BODY PKG_DETERMINISTIC
                       IS
                       function FUNC_TEST
                       return number deterministic is
                       v_len number;
                        begin
                       select length(a) into v_len from t_deterministic;
                        return v_len;
                       end;
                       END PKG_DETERMINISTIC;
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

益阳市| 右玉县| 南郑县| 海阳市| 犍为县| 新源县| 德令哈市| 信阳市| 海南省| 芜湖县| 丰镇市| 龙门县| 江都市| 威宁| 双桥区| 平度市| 盐池县| 吉水县| 邳州市| 壤塘县| 富裕县| 九寨沟县| 宣武区| 佛冈县| 佛教| 宜兴市| 高淳县| 高青县| 原阳县| 新津县| 思茅市| 洛浦县| 城步| 津南区| 锡林郭勒盟| 浠水县| 霞浦县| 肥西县| 太谷县| 镇原县| 横峰县|