亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

在Oracle表中進行關鍵詞搜索的過程

瀏覽:75日期:2023-03-12 15:25:00
目錄
  • 在Oracle表中的關鍵詞搜索
    • 在Oracle數據庫中,我們可以很容易地在模式內的表中找到我們正在尋找的文本或關鍵詞。
  • 結果部分。

    在Oracle表中的關鍵詞搜索

    在Oracle數據庫中,我們可以很容易地在模式內的表中找到我們正在尋找的文本或關鍵詞。

    請閱讀以了解該過程的步驟。

    在Oracle數據庫中,我們可以很容易地在模式內的表中找到我們要找的文本或關鍵詞。由于我們可以搜索模式中的所有表,我們也可以在屬于該模式的所需表內進行搜索。

    如下面的PL/SQL塊所示,我們要搜索的文本/關鍵詞是在相關表的varchar列上進行的。

    • 首先,我們在PL/SQL代碼塊的DECLARATION部分指定 "p_search_text" -->要搜索的常量文本。
    • 在最下面一行,我們指定SCHEMA NAME為一個常量。
    • 在下一行中,我們指定了TABLE NAME。
    • 當我們把TABLE NAME字段傳遞為空時,我們搜索該模式中的所有表。
    • 如果我們把TABLE NAME傳滿,我們應該注意該模式中的表。否則,我們的搜索將找不到任何記錄。

    如上所述輸入我們的定義后,我們可以通過Oracle SQL Developer或Toad運行下面的PL/SQL塊。

    PLSQL

    DECLARE
        p_search_text      CONSTANT VARCHAR2 (1000) := "SAMPLE SEARCH WRITE";
        p_schema_name      CONSTANT VARCHAR2 (1000) := "SAMPLE SCHEMA NAME"; 
        p_table_name       CONSTANT VARCHAR2 (1000) := "SAMPLE TABLE NAME";-- NULL (If FULL will work, give the table name null)
    
        TYPE r_column_data IS RECORD
        (
    column_name    SYS.DBA_TAB_COLUMNS.COLUMN_NAME%TYPE
        );
    
        TYPE tr_column_data IS TABLE OF r_column_data
    INDEX BY PLS_INTEGER;
    
        ltr_column_data     tr_column_data;
    
        TYPE tr_table IS TABLE OF VARCHAR2 (200)
    INDEX BY PLS_INTEGER;
    
        l_sql       VARCHAR2 (1000);
        l_count     NUMBER;
        ltr_table   tr_table;
        l_found     NUMBER := 0;
        l_column_name       VARCHAR2 (100);
    BEGIN
          SELECT table_name
    BULK COLLECT INTO ltr_table
    FROM dba_tables
           WHERE     owner = p_schema_name
         AND table_name LIKE "" || p_table_name || "" || "%"
         AND ROWNUM <= 19999
        ORDER BY 1;
    
        DBMS_APPLICATION_INFO.set_module ("PV_FINDER", NULL);
    
        FOR i IN 1 .. ltr_table.COUNT
        LOOP
    DBMS_APPLICATION_INFO.set_client_info (
        i || "/" || ltr_table.COUNT || " -> " || ltr_table (i));
    
      SELECT col.column_name
        BULK COLLECT INTO ltr_column_data
        FROM sys.dba_tab_columns col
     INNER JOIN sys.dba_tables t
         ON col.owner = t.owner AND col.table_name = t.table_name
       WHERE col.table_name = ltr_table (i) AND col.DATA_TYPE = "VARCHAR2"
    ORDER BY col.column_id;
    
    FOR j IN 1 .. ltr_column_data.COUNT
    LOOP
        DBMS_APPLICATION_INFO.set_client_info (
       j
    || "/"
    || ltr_column_data.COUNT
    || " -> "
    || ltr_column_data (j).column_name);
    
        l_sql :=
       "SELECT /*+ PARALLEL (A 8)*/ count(1) from "
    || p_schema_name
    || "."
    || ltr_table (i)
    || " A WHERE "
    || ltr_column_data (j).column_name
    || " ="""
    || p_search_text
    || """";
    
        EXECUTE IMMEDIATE l_sql INTO l_count;
    
        IF l_count > 0
        THEN
    IF l_found = 0
    THEN
        DBMS_OUTPUT.put_line (
    "Search Keyword: " || p_search_text);
        DBMS_OUTPUT.put_line (
    "-------------------------------------------");
    END IF;
    
    DBMS_OUTPUT.put_line ("table name found : "||ltr_table (i) );
    DBMS_OUTPUT.put_line ("column name found : " || ltr_column_data (j).column_name);
    DBMS_OUTPUT.put_line ("count : " || l_count);
    DBMS_OUTPUT.put_line ("sql name : " || l_sql);
    DBMS_OUTPUT.put_line ("*****");
    
    l_found := l_found + 1;
        END IF;
    END LOOP;
        END LOOP;
    
        DBMS_APPLICATION_INFO.set_module (NULL, NULL);
        DBMS_APPLICATION_INFO.set_client_info (NULL);
        DBMS_OUTPUT.put_line ("-------------------------------------------");
        DBMS_OUTPUT.put_line ("total number of tables searched : " || ltr_table.COUNT);
        DBMS_OUTPUT.put_line ("total number of tables found : " || l_found);
    END;
    
    /*select module,client_info from v$session where module like "%PV_FINDER%"*/

    結果部分。

    • 如果我們搜索的關鍵詞/文本在相關的表中找到了,找到的表的名稱和找到的列的名稱,數量,以及查詢信息都會被寫出來。
    • 在底部是一般的總信息。我們可以看到搜索到的表的總數以及這些表中有多少被找到。
    Search Keyword: SAMPLE SEARCH KEYWORD
    -------------------------------------------
    table name found : TABLE - 1
    column name found : COLUMN NAME 
    count : 4
    sql name : SELECT /*+ PARALLEL (A 8)*/ count(1) from SCHEMA_NAME.TABLE-1 A WHERE TABLE-1.COLUMN ="SAMPLE SEARCH KEYWORD"
    *****
    table name found : TABLE - 2
    column name found : COLUMN NAME 
    count : 2
    sql name : SELECT /*+ PARALLEL (A 8)*/ count(1) from SCHEMA_NAME.TABLE-2 A WHERE TABLE-1.COLUMN ="SAMPLE SEARCH KEYWORD"
    *****
    table name found : TABLE - 3
    column name found : COLUMN NAME 
    count : 2
    sql name : SELECT /*+ PARALLEL (A 8)*/ count(1) from SCHEMA_NAME.TABLE-3 A WHERE TABLE-1.COLUMN ="SAMPLE SEARCH KEYWORD"
    *****
    table name found : TABLE - 4
    column name found : COLUMN NAME 
    count : 2
    sql name : SELECT /*+ PARALLEL (A 8)*/ count(1) from SCHEMA_NAME.TABLE-4 A WHERE TABLE-1.COLUMN ="SAMPLE SEARCH KEYWORD"
    *****
    -------------------------------------------
    total number of tables searched : 72
    total number of tables found : 4

    oracle, plsql, oracle數據庫, oracle表, 關鍵字搜索

    DZone貢獻者所表達的觀點屬于他們自己。

    到此這篇關于在Oracle表中進行關鍵詞搜索的過程的文章就介紹到這了,更多相關Oracle關鍵詞搜索內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

    標簽: Oracle
    主站蜘蛛池模板: 一级中文字幕 | 福利片第一页 | 国精品在亚洲_欧美 | 五月天六月丁香 | 国产精品爽黄69天堂a | 国产精品第3页 | 国产成人精品免费视频大全麻豆 | 青草视频免费 | 亚洲精品色综合区 | 国产大秀视频在线一区二区 | 亚洲综合婷婷 | 人九九精品 | 婷婷国产在线 | 污污美女网站 | 精品综合 | 小明成人永久免费观看视频 | 在线免费视频国产 | 久久aa| 综合激情区视频一区视频二区 | 五月婷婷六月丁香综合 | 精品一区二区三区视频 | 日本高清www免费视频 | 国产免费高清视频在线观看不卡 | 欧美a区 | 一级特黄a免费大片 | 欧美日韩一二三区 | 国产日韩免费视频 | 做a视频大全 | 香蕉视频视频 | 国产精选在线播放 | 国产视频不卡 | 国产乱码一区二区三区四区 | 国产在线观看青草视频 | 久久久窝窝午夜精品 | 一级特级片| 国产一区二区影视 | 国产精品亚洲欧美日韩久久 | 日韩欧美在线综合 | 成人亚洲视频在线观看 | 日本一级毛片视频无遮挡免费 | 精品国产日韩亚洲一区91 |