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

您的位置:首頁技術(shù)文章
文章詳情頁

在Oracle表中進行關(guān)鍵詞搜索的過程

瀏覽:108日期:2023-03-12 15:25:00
目錄
  • 在Oracle表中的關(guān)鍵詞搜索
    • 在Oracle數(shù)據(jù)庫中,我們可以很容易地在模式內(nèi)的表中找到我們正在尋找的文本或關(guān)鍵詞。
  • 結(jié)果部分。

    在Oracle表中的關(guān)鍵詞搜索

    在Oracle數(shù)據(jù)庫中,我們可以很容易地在模式內(nèi)的表中找到我們正在尋找的文本或關(guān)鍵詞。

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

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

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

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

    如上所述輸入我們的定義后,我們可以通過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%"*/

    結(jié)果部分。

    • 如果我們搜索的關(guān)鍵詞/文本在相關(guān)的表中找到了,找到的表的名稱和找到的列的名稱,數(shù)量,以及查詢信息都會被寫出來。
    • 在底部是一般的總信息。我們可以看到搜索到的表的總數(shù)以及這些表中有多少被找到。
    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數(shù)據(jù)庫, oracle表, 關(guān)鍵字搜索

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

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

    標簽: Oracle
    主站蜘蛛池模板: 精品成人一区二区三区免费视频 | 色国产在线视频一区 | 国产百合一区二区三区 | 欧美a级黄色片 | 高清性色生活片免费视频软件 | 1024日本 | 精品一区二区三区中文 | 又硬又大又湿又紧a视频 | 久久九九国产精品怡红院 | 黄色片网站免费 | 国产高清色播视频免费看 | 亚洲乱码视频 | 免费看大黄高清网站视频在线 | 国产精品久久久免费视频 | 国产在线午夜 | 国产精品短篇二区 | 18在线网站| 色爱综合区五月小说 | 黄色免费毛片 | 1024视频在线 | 欧美亚洲精品一区 | 一级@片| 免黄网站 | 久久精品国产色蜜蜜麻豆 | 国产精品成人69xxx免费视频 | 成年女人免费v片 | 亚洲无线码1区 | 色琪琪综合网站 | 色婷婷亚洲十月十月色天 | 久久精品女人毛片国产 | 成人性色生活片 | 成人欧美视频免费看黄黄 | 日本一卡2卡三卡4卡 免费网站仙踪 | 好湿好紧好痛a级是免费视频 | 色偷偷尼玛图亚洲综合 | 澳门久久精品 | 一区不卡视频 | 国产高清厕所盗摄视频 | 日韩中文字幕免费在线观看 | 911精品国产91久久久久 | 午夜精品福利在线 |