色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

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

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

瀏覽:120日期: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
    主站蜘蛛池模板: 精品日韩一区二区三区 | 国产区香蕉精品系列在线观看不卡 | 国产三级免费观看 | 国产舐足视频在线观看 | 国产精品久久久久久久久免费观看 | 免费视频久久 | 亚洲综合国产一区在线 | 欧美精品人爱a欧美精品 | 毛片免费看看 | 日韩中文字幕在线看 | 亚洲国产成人超福利久久精品 | 亚洲成年人在线观看 | 亚洲精品久久久久午夜三 | 日韩a毛片免费全部播放完整 | 国产一区二区三区欧美 | 偷看各类wc女厕嘘在线观看 | 国产手机看片 | 国产成人盗拍精品免费视频 | 美女久草 | 国产精品国三级国产aⅴ | 国产杨幂福利在线视频观看 | 久久99精品久久久久久野外 | 国产一区二区fc2ppv在线播放 | 亚洲精品久久一区二区无卡 | 精品综合 | 久久成人在线 | 久久福利资源网站免费看 | 国产伦子伦视频免费 | 国产精品久久久久久久网站 | 亚洲第一中文字幕 | 97久久曰曰久久久 | 久久久久久久99久久久毒国产 | 在线观看不卡一区 | 91精品免费久久久久久久久 | 免费永久在线观看黄网 | 最新怡红院全部视频在线 | 亚洲综合中文 | 亚洲成人免费视频 | 成人黄色一级毛片 | 国产一国产一级毛片视频在线 | 先锋影音xfyy5566男人资源 |