av一区二区在线观看_亚洲男人的天堂网站_日韩亚洲视频_在线成人免费_欧美日韩精品免费观看视频_久草视

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

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

瀏覽:100日期: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)鍵詞。

    請(qǐng)閱讀以了解該過程的步驟。

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

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

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

    如上所述輸入我們的定義后,我們可以通過Oracle SQL Developer或Toad運(yùn)行下面的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ù)量,以及查詢信息都會(huì)被寫出來。
    • 在底部是一般的總信息。我們可以看到搜索到的表的總數(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貢獻(xiàn)者所表達(dá)的觀點(diǎn)屬于他們自己。

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

    標(biāo)簽: Oracle
    主站蜘蛛池模板: 久久久久久国产 | 91视在线国内在线播放酒店 | 日韩视频国产 | 久久中文字幕一区 | 丝袜久久| 成人高清在线 | 成人做爰www免费看视频网站 | 久久中文字幕一区 | 婷婷色国产偷v国产偷v小说 | 国产精品久久久久久吹潮 | 亚洲成人精品 | 欧美视频在线一区 | 一级看片 | 久久一级 | 五月激情婷婷网 | 激情五月婷婷 | 国产在线网址 | 视频在线一区二区 | 国产一区二区三区在线视频 | 国产精品久久久久9999鸭 | 免费观看一级视频 | 日本在线一二 | 亚洲欧美少妇 | 亚洲日本欧美日韩高观看 | 欧美在线观看免费观看视频 | 天天弄天天操 | 91国产精品 | 欧美四虎 | 日韩在线欧美 | 日韩午夜精品 | 日韩欧美中文字幕在线视频 | 射久久 | 久99久视频 | 视频一区中文字幕 | 97日日碰人人模人人澡分享吧 | 久久成人久久 | 日本黄色一级视频 | 国产在线精品一区二区 | 国色天香成人网 | 国产一区2区 | 国产精品国产亚洲精品看不卡15 |