在SQL中,获取多个表的计数;然后将计数+字符串插入到新表中



我需要编写一个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

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

假设您不能使用dba_tables中的num_rows,这可能是从收集统计数据的时间点开始的近似计数,而不是当前计数,最简单的方法是

SELECT 'CS_ADM_CV' table_name,
       COUNT(*) cnt
  FROM STGADM.CS_ADM_CV
UNION ALL
SELECT 'CS_CV_IBM' table_name,
       COUNT(*) cnt
  FROM STGADM.CS_CV_IBM
UNION ALL
SELECT 'CS_CV_ORA' table_name,
       COUNT(*) cnt
  FROM STGADM.CS_CV_ORA
...

也可以编写一个查询,返回特定模式中每个表的行数,但这会涉及到一些非常复杂的XML查询主题。除非您需要在添加新表时获得不同行集的灵活性,否则列出30个表可能是更容易的解决方案。

相关内容

最新更新