中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

台南市| 广饶县| 卢氏县| 平阳县| 咸丰县| 泰州市| 陇西县| 花垣县| 陵水| 湖南省| 杭锦后旗| 丹寨县| 柳林县| 罗江县| 廊坊市| 绥化市| 电白县| 钟山县| 安岳县| 基隆市| 襄垣县| 徐汇区| 罗源县| 昭平县| 湘潭县| 巢湖市| 怀宁县| 本溪市| 怀柔区| 九龙城区| 景泰县| 沈阳市| 内乡县| 潜江市| 冷水江市| 罗源县| 涿州市| 正安县| 荣昌县| 武鸣县| 万全县|