zoukankan      html  css  js  c++  java
  • Oracle 以及 达梦数据库简单查询所有表行数的存储过程

    1. 今天有一个场景需要查询一个数据库实例下面所有的表的行数.

    本来想查询 user_tables 视图 但是发现 这个视图里面 达梦数据库 里面存的是null的..

    百度之后发现一个解决方案是 使用存储过程, 然后简单进行了一下修改, 在产品部 胡平老师的帮助下实现了.

    方法为:

    1. 创建一个空表

    create table zhaobsh (tablename varchar(200),tablenum varchar(200));

    一个存储表名 一个存储列数

    2. 根据百度修改了一下 创建一个存储过程

    备注 发现有人弄了很多 _ 开头的备份表 发现这些备份表会报错, 没办法 找了一下语法 排除所有 带_ 的表.

    另外发现能创建 一个float的数据库表很神奇 编译过程中不报错, 调用过程中会报错 drop table 还drop不了 只能通过gui的方式删除..

    神奇. 

    create or replace PROCEDURE  zhaobsh_procedure
    IS
    declare
    
      v_sql varchar2(200);
    
      v_cnt number(10);
    
    begin
    
      for v_tab in (select table_name from user_tables t where table_name not like '%a_%'  ESCAPE 'a'  ) loop
    
        v_sql := 'select count(*) from '|| v_tab.table_name;
    
        execute immediate v_sql into v_cnt;
    
         insert into zhaobsh values (v_tab.table_name,v_cnt);
    
      end loop;
    
    end;
    /

    3. 然后执行存储过程的调用. 

     可以先清理一下环境.

    delete from zhaobsh
    
    call "GSCLOUD"."ZHAOBSH_PROCEDURE"();
    
    select * from zhaobsh order by tablename asc 

    就能够看到响应的表记录信息了. 

  • 相关阅读:
    使用BeyondCompare作为Subversive的比较器
    Ubuntu下安装jdk6的方法和步骤
    推荐几款通用的数据库管理工具
    通用数据库都有哪些
    Linux下卸载ORACLE的多种方法(参考使用)
    jar包查询网站 非常好用!
    8种Nosql数据库系统对比
    SQL2005数据库镜像的步骤
    建立与删除SQL 2008事务复制发布
    同步复制JOB说明
  • 原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/12664800.html
Copyright © 2011-2022 走看看