久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

在Oracle10g中如何使用包DBMS

168次閱讀
沒有評論

共計 2404 個字符,預計需要花費 7 分鐘才能閱讀完成。

行業資訊    
數據庫    
關系型數據庫    
在 Oracle10g 中如何使用包 DBMS_ADVANCED_REWRITE 實現新的查詢重寫功能

丸趣 TV 小編給大家分享一下在 Oracle10g 中如何使用包 DBMS_ADVANCED_REWRITE 實現新的查詢重寫功能,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

從 Oracle10g 版本 1 開始,提供了新的包 DBMS_ADVANCED_REWRITE 來實現查詢重寫。它允許你截獲特定的 SQL 語句,并將
其重定義為另一個 SQL 語句。下面是一個簡單的例子:

1、確認測試用戶有必要的權限去運行

CONN sys/password AS SYSDBA
 
 GRANT EXECUTE ON DBMS_ADVANCED_REWRITE TO test;
 GRANT CREATE MATERIALIZED VIEW TO test;

[@more@]

2、創建測試用表

CONN test/test
 
 DROP TABLE rewrite_test_tab;
 
 CREATE TABLE rewrite_test_tab (
   id           NUMBER,
   description  VARCHAR2(50),
   CONSTRAINT rewrite_test_tab_pk PRIMARY KEY (id)
 );
 
 INSERT INTO rewrite_test_tab (id, description) VALUES (1, GLASGOW
 INSERT INTO rewrite_test_tab (id, description) VALUES (2, BIRMINGHAM
 INSERT INTO rewrite_test_tab (id, description) VALUES (3, LONDON
 COMMIT;
 
 EXEC DBMS_STATS.gather_table_stats(USER, rewrite_test_tab

3、查詢測試表

SELECT * FROM rewrite_test_tab;
 
         ID DESCRIPTION
 ———- ————————————————–
          1 GLASGOW
          2 BIRMINGHAM
          3 LONDON
 
 3 rows selected.
 
 SQL

4、創建要替換成的 SQL 使用的視圖,然后將上面的語句重定義為查詢這個視圖

CREATE OR REPLACE VIEW rewrite_test_tab_v AS
 SELECT id,
        INITCAP(description) AS description
 FROM   rewrite_test_tab
 ORDER BY description;
 
 BEGIN
   SYS.DBMS_ADVANCED_REWRITE.declare_rewrite_equivalence (
      name             = test_rewrite ,
      source_stmt      = SELECT * FROM rewrite_test_tab ,
      destination_stmt = SELECT * FROM rewrite_test_tab_v ,
      validate         = FALSE,
      rewrite_mode     = TEXT_MATCH
 END;
 /

5、初始化參數 QUERY_REWRITE_INTEGRITY 缺省值為 enforced,意味只有原始語句的輸出和替換后語句的輸出完全
  一致才會進行重寫替換。而我們要實現替換后的輸出跟原始輸出是有差別的,所以需要將這個參數的值修改為
  TRUSTED 才行。

ALTER SESSION SET QUERY_REWRITE_INTEGRITY = TRUSTED;
 
 Session altered.
 
 SELECT * FROM rewrite_test_tab;
 
         ID DESCRIPTION
 ———- ————————————————–
          2 Birmingham
          1 Glasgow
          3 London
 
 3 rows selected.
 
 SQL

6、視圖[USER|ALL|DBA]_REWRITE_EQUIVALENCES 中有這些重定義查詢的相關信息

SELECT * FROM user_rewrite_equivalences;
 
 OWNER                          NAME
 —————————— ——————————
 SOURCE_STMT
 ——————————————————————————–
 DESTINATION_STMT                                                                 REWRITE_MO
 ——————————————————————————– ———-
 TEST                           TEST_REWRITE
 SELECT * FROM rewrite_test_tab
 SELECT * FROM rewrite_test_tab_v                                                 TEXT_MATCH
 
 
 1 row selected.
 
 SQL

看完了這篇文章,相信你對“在 Oracle10g 中如何使用包 DBMS_ADVANCED_REWRITE 實現新的查詢重寫功能”有了一定的了解,如果想了解更多相關知識,歡迎關注丸趣 TV 行業資訊頻道,感謝各位的閱讀!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計2404字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 彰化县| 鄄城县| 乐昌市| 鄂尔多斯市| 波密县| 林周县| 于田县| 谢通门县| 贵州省| 随州市| 宽城| 富平县| 绥芬河市| 高尔夫| 郑州市| 日喀则市| 五原县| 东源县| 酉阳| 鄂托克前旗| 卓资县| 全南县| 永城市| 昭通市| 南木林县| 两当县| 彭阳县| 栾城县| 陵川县| 房产| 互助| 喀什市| 上杭县| 长汀县| 吴旗县| 三门峡市| 吴忠市| 临湘市| 涡阳县| 张家川| 漳平市|