ORACLE 模糊查询所有表数据中是否包含关键字

1.在Oracle中,您可以使用USER_TAB_COLUMNS视图来查询所有表的所有字段,然后使用动态SQL来构建查询语句,以检查表中的数据是否包含特定关键字:

1.创建存储过程

CREATE OR REPLACE PROCEDURE SEARCH_KEYWORD_BY_ALL_TABLE(V_SEARCH_KEYWORD IN VARCHAR2,
                                                OUT_RTN_CODE     OUT NUMBER,
                                                OUT_RTN_INFO     OUT VARCHAR2) AS
--@desc: 模糊查询所有表数据中是否包含关键字                                                
  V_SQL_QUERY VARCHAR2(4000);
  V_COUNT     NUMBER; -- 计数
  V_RESULT    VARCHAR2(4000); -- 结果描述
BEGIN
  OUT_RTN_CODE := 1;

  FOR C IN (SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE
              FROM USER_TAB_COLUMNS
             WHERE DATA_TYPE in ('VARCHAR2', 'NVARCHAR2', 'VARCHAR', 'NVARCHAR')) LOOP
    V_SQL_QUERY := 'SELECT COUNT(*) FROM ' || C.TABLE_NAME || ' WHERE ' ||
                   C.COLUMN_NAME || ' LIKE ''%' || V_SEARCH_KEYWORD ||
                   '%''';
    EXECUTE IMMEDIATE V_SQL_QUERY INTO V_COUNT;
    IF V_COUNT >= 1 THEN
      V_RESULT := V_RESULT || ' ' || '表名:' || C.TABLE_NAME || ' 字段名:' || C.COLUMN_NAME || ' ';
    END IF;
  END LOOP;
  OUT_RTN_INFO := V_RESULT;
END;
 

执行存储过程:输入参数V_SEARCH_KEYWORD:上杭,结果:

备注:输出结果参数:V_RESULT最大支持4000个字符,超出会报错,仅供娱乐

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值