文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

在Oracle表中如何进行关键词搜索

2023-07-02 09:03

关注

这篇“在Oracle表中如何进行关键词搜索”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在Oracle表中如何进行关键词搜索”文章吧。

在Oracle表中的关键词搜索

在Oracle数据库中,我们可以很容易地在模式内的表中找到我们正在寻找的文本或关键词。

请阅读以了解该过程的步骤。

在Oracle数据库中,我们可以很容易地在模式内的表中找到我们要找的文本或关键词。由于我们可以搜索模式中的所有表,我们也可以在属于该模式的所需表内进行搜索。

如下面的PL/SQL块所示,我们要搜索的文本/关键词是在相关表的varchar列上进行的。

如上所述输入我们的定义后,我们可以通过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  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;

结果部分。

Search Keyword: SAMPLE SEARCH KEYWORD-------------------------------------------table name found : TABLE - 1column name found : COLUMN NAME count : 4sql name : SELECT  count(1) from SCHEMA_NAME.TABLE-1 A WHERE TABLE-1.COLUMN ='SAMPLE SEARCH KEYWORD'*****table name found : TABLE - 2column name found : COLUMN NAME count : 2sql name : SELECT  count(1) from SCHEMA_NAME.TABLE-2 A WHERE TABLE-1.COLUMN ='SAMPLE SEARCH KEYWORD'*****table name found : TABLE - 3column name found : COLUMN NAME count : 2sql name : SELECT  count(1) from SCHEMA_NAME.TABLE-3 A WHERE TABLE-1.COLUMN ='SAMPLE SEARCH KEYWORD'*****table name found : TABLE - 4column name found : COLUMN NAME count : 2sql name : SELECT  count(1) from SCHEMA_NAME.TABLE-4 A WHERE TABLE-1.COLUMN ='SAMPLE SEARCH KEYWORD'*****-------------------------------------------total number of tables searched : 72total number of tables found : 4

oracle, plsql, oracle数据库, oracle表, 关键字搜索

DZone贡献者所表达的观点属于他们自己。

以上就是关于“在Oracle表中如何进行关键词搜索”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯