最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2022年06月10日 15:03:27   作者:方石劍  
這篇文章主要介紹了在Oracle表中進行關(guān)鍵詞搜索的過程,我們可以通過Oracle?SQL?Developer或Toad運行PL/SQL塊,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

在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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 數(shù)據(jù)庫oracle用戶密碼過期查詢及解決方案

    數(shù)據(jù)庫oracle用戶密碼過期查詢及解決方案

    這篇文章主要介紹了如何處理ORACLE數(shù)據(jù)庫用戶密碼過期和修改密碼期限的問題,包括創(chuàng)建用戶、賦予權(quán)限、修改密碼、解鎖用戶和設(shè)置密碼期限,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • ORACLE 自動提交問題

    ORACLE 自動提交問題

    通過PL/SQL DEVELOPER向數(shù)據(jù)庫中的某個表中插入一定量的數(shù)據(jù),通過select 語句可以看到已經(jīng)插入到表中,然而詭異的是通過程序卻無法查詢到新插入的數(shù)據(jù)。
    2009-06-06
  • maven添加oracle依賴失敗問題的處理方法

    maven添加oracle依賴失敗問題的處理方法

    這篇文章主要介紹了maven添加oracle依賴失敗問題的處理方法,需要的朋友可以參考下
    2018-07-07
  • oracle case when 語句的用法詳解

    oracle case when 語句的用法詳解

    本篇文章是對oracle case when 語句的用法進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05
  • Oracle獲取執(zhí)行計劃的六種方法總結(jié)

    Oracle獲取執(zhí)行計劃的六種方法總結(jié)

    執(zhí)行計劃(explain plan)是指一條查詢語句在數(shù)據(jù)庫中的執(zhí)行過程或訪問路徑的描述,下面這篇文章主要給大家總結(jié)介紹了關(guān)于Oracle獲取執(zhí)行計劃的六種方法,需要的朋友可以參考下
    2024-01-01
  • Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的方法

    Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的方法

    Oracle是一種廣泛應(yīng)用于企業(yè)級數(shù)據(jù)庫系統(tǒng)的軟件,但在操作過程中可能會發(fā)生誤刪除數(shù)據(jù)的情況,這時就需要進行數(shù)據(jù)恢復(fù)操作,這篇文章主要給大家介紹了關(guān)于Oracle查看表操作歷史記錄并恢復(fù)數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2023-08-08
  • Oracle批量插入數(shù)據(jù)的三種方式【推薦】

    Oracle批量插入數(shù)據(jù)的三種方式【推薦】

    本文給大家?guī)砣Noracle批量插入數(shù)據(jù)的方法,每種方法都是通過實例代碼給大家介紹的非常詳細,需要的朋友參考下吧
    2018-06-06
  • Oracle 11g收集多列統(tǒng)計信息詳解

    Oracle 11g收集多列統(tǒng)計信息詳解

    我們在寫SQL語句的時候,有的時候會碰到where子句后面有多個條件的情況,也就是根據(jù)多列的條件篩選得到數(shù)據(jù)。下面這篇文章主要給大家介紹了Oracle 11g收集多列統(tǒng)計信息的相關(guān)資料,文中介紹的非常詳細,需要的朋友可以參考下。
    2017-03-03
  • oracle執(zhí)行update語句時卡住問題分析及解決辦法

    oracle執(zhí)行update語句時卡住問題分析及解決辦法

    這篇文章主要介紹了oracle執(zhí)行update語句時卡住問題分析及解決辦法,涉及記錄鎖等相關(guān)知識,具有一定參考價值,需要的朋友可以了解。
    2017-10-10
  • Oracle date如何比較大小分析

    Oracle date如何比較大小分析

    本文將詳細介紹Oracle date如何比較大小,需要了解更多的朋友可以參考下
    2012-11-11

最新評論

闽清县| 咸宁市| 盖州市| 浦城县| 仁布县| 玉环县| 龙岩市| 洛浦县| 西乡县| 宁津县| 哈密市| 疏勒县| 平塘县| 乌拉特前旗| 汾西县| 石柱| 峨眉山市| 兰坪| 固原市| 稻城县| 安平县| 玛多县| 石台县| 佛山市| 平南县| 张家界市| 会理县| 六安市| 舞钢市| 小金县| 锡林郭勒盟| 浦县| 东乌珠穆沁旗| 北辰区| 故城县| 普兰县| 崇信县| 彰化县| 祁门县| 芒康县| 枞阳县|