在SQL中 - 抓取多个表的计数;然后将count + string插入新表?

时间:2014-04-29 02:13:32

标签: sql oracle

我需要编写一个PL / SQL脚本来收集大约30个表的计数,然后将这些计数插入到一个新表中(这将有30行)。所以新表可能看起来像:

CS_ADM_CV    27
CS_CV_IBM    38
CS_CV_ORA    99
CS_YY_CIS    12

... ETC

我该怎么做呢?这就是我到目前为止,它不像我想的那样工作。

    SELECT  (
            SELECT COUNT(*)
            from   STGADM.CI_ACCT
            ) AS 'STGADM.CI_ACCT',
/*  More like this etc etc */
            (
            SELECT COUNT(*)
            from   STGADM.CI_TNDR_CTL
            ) as 'STGADM.CI_TNDR_CTL'

    from    DUAL
    into STGADM-CCBMIG.CV_PLSQL_COUNT;

看起来我对如何获取所有计数然后将它们插入到新表中有错误的想法(我遗漏了琐碎的CREATE语句)。

有人告诉我使用PL / SQL VAR来做到这一点。确定

完整代码 - http://pastebin.com/48ExZWq0

我需要任何提示/帮助,谢谢

1 个答案:

答案 0 :(得分:2)

假设您无法使用来自num_rows的{​​{1}},这可能是从收集统计信息的时间点开始的可能近似计数,而不是当前计数,最简单的方法会是

dba_tables

也可以编写一个single query that returns the number of rows in every table in a particular schema但是可以进入一些非常复杂的XML查询主题。除非您在添加新表时需要灵活地获取不同的行集,否则列出30个表可能是更容易的解决方案。