Oracle 数据库查询表下包含某个值

转载博客:https://blog.csdn.net/qiuchw/article/details/96009535

Oracle 数据库查询表下包含某个值

declare
  v_sql  varchar2(1000);
  data_count number;
begin
  for cur_table in (select distinct  table_name
                      from user_tab_columns a) loop
    for cur_column in (select distinct column_name
                         from user_tab_columns a
                        where a.TABLE_NAME = cur_table.table_name) loop
      v_sql := 'select count(*) from ' || cur_table.table_name ||
               '  where instr(' || cur_column.column_name ||
               ',''17780'')>0';
      execute immediate v_sql into data_count;
      if (data_count > 0) then
        dbms_output.put_line(cur_table.table_name);
        dbms_output.put_line(cur_column.column_name);
        dbms_output.put_line(data_count || ':' || v_sql);
      end if;
    end loop;
  end loop;
end ;

------------------------第二种查询方法----------------------

DECLARE  
CURSOR cur_query IS  
  SELECT table_name, column_name, data_type FROM user_tab_columns;  
  a NUMBER;  
  sql_hard VARCHAR2(2000);  
  vv NUMBER;  
BEGIN  
  DBMS_OUTPUT.ENABLE(buffer_size => null);
  FOR rec1 IN cur_query LOOP  
  a:=0;  
  IF rec1.data_type ='VARCHAR2' THEN  
  a := 1;  
  END IF;  
  IF a>0 THEN  
  sql_hard := '';  
  sql_hard := 'SELECT COUNT(*) FROM  '|| rec1.table_name ||' WHERE '  ||rec1.column_name  || '=''查询的值''';
  dbms_output.put_line(sql_hard);   
  EXECUTE IMMEDIATE sql_hard INTO vv;  
  IF vv > 0 THEN  
   dbms_output.put_line('[字段值所在的表.字段]:['||rec1.table_name||'].['||rec1.column_name||']');  
  END IF;   
  END IF;  
  END LOOP;  
END;  

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值