如何遍历某数据库中的每一个表的总记录数

系统 1832 0
      
         1
      
      
        上网搜集了很多资料,终于写出可以执行的一个存储过程了,如下:


      
      
         2
      
      
         3
      
      
        SET
      
       ANSI_NULLS 
      
        ON
      
      
         4
      
      
        GO
      
      
         5
      
      
        SET
      
       QUOTED_IDENTIFIER 
      
        ON
      
      
         6
      
      
        GO
      
      
         7
      
      
         8
      
      
        --
      
      
        重点开始了
      
      
         9
      
      
        CREATE
      
      
        PROCEDURE
      
      
        [
      
      
        dbo
      
      
        ]
      
      .
      
        [
      
      
        hrmis_counts
      
      
        ]
      
      
        10
      
      
        11
      
      
        AS
      
      
        12
      
      
        BEGIN
      
      
        13
      
      
        --
      
      
        声明游标
      
      
        14
      
      
        Declare
      
       MyCursor 
      
        Cursor
      
      
        15
      
      
        For
      
      
        Select
      
       name 
      
        From
      
       hrmis..sysobjects 
      
        where
      
       xtype
      
        =
      
      
        '
      
      
        u
      
      
        '
      
      
        16
      
      
        --
      
      
        "hrmis"是我需要查询的数据库名称
      
      
        17
      
      
        --
      
      
        "xtype='u'"的意思是:只查询用户表,系统表不要,但可能会出错,网上有资料防止这种意外,至少我没有报错,就不理了。
      
      
        18
      
      
        19
      
      
        --
      
      
        打开游标
      
      
        20
      
      
        Open
      
      
         MyCursor


      
      
        21
      
      
        --
      
      
        定义变量
      
      
        22
      
      
        Declare
      
      
        @tableName
      
      
        nvarchar
      
      (
      
        max
      
      ),
      
        @sql
      
      
        nvarchar
      
      (
      
        max
      
      ),
      
        @counts
      
      
        int
      
      
        23
      
      
        Fetch
      
      
        Next
      
      
        From
      
       MyCursor 
      
        Into
      
      
        @tableName
      
      
        24
      
      
        While
      
      
        @@Fetch_status
      
      
        =
      
      
        0
      
      
        25
      
      
        --
      
      
        @@Fetch_status = 0是指:游标未到末尾
      
      
        26
      
      
        Begin
      
      
        27
      
      
        Set
      
      
        @sql
      
      
        =
      
      
        '
      
      
        Select @counts=count(*) From 
      
      
        '
      
      
        +
      
      
        @tableName
      
      
        28
      
      
        --
      
      
        print @sql
      
      
        29
      
      
        --
      
      
        Exec(@sql)
      
      
        30
      
      
        --
      
      
        上面这句会报错的“@counts未定义之类的,我忘了,有兴趣自己试试”,反正不能直接执行就是了。
      
      
        31
      
      
        --
      
      
        正确的写法是下面这句
      
      
        32
      
      
        Exec
      
       sp_executesql 
      
        @sql
      
      ,N
      
        '
      
      
        @counts Int out
      
      
        '
      
      ,
      
        @counts
      
      
         out


      
      
        33
      
      
        --
      
      
        好吧,我承认我也不太了解这条语句的含意,但这是不重点,重点是,它执行成功了。
      
      
        34
      
      
        If
      
      
        @counts
      
      
        >
      
      
        10000
      
      
        35
      
      
        --
      
      
        只显示记录数大于1W的表名(这里随意就好了,不要也行)
      
      
        36
      
      
        print
      
       (
      
        Convert
      
      (
      
        nvarchar
      
      (
      
        max
      
      ),
      
        @counts
      
      ) 
      
        +
      
      
        '
      
      
        ......
      
      
        '
      
      
        +
      
      
        @tableName
      
      
        )


      
      
        37
      
      
        Fetch
      
      
        Next
      
      
        From
      
       MyCursor 
      
        Into
      
      
        @tableName
      
      
        38
      
      
        End
      
      
        39
      
      
        --
      
      
        关闭游标
      
      
        40
      
      
        Close
      
      
         MyCursor


      
      
        41
      
      
        Deallocate
      
      
         MyCursor


      
      
        42
      
      
        End
      
      
        43
      
      
        GO
      
    

保存一下,然后执行此存储过程,就可以自动遍历数据库中的所有表(647个表哇,蛋疼),然后把记录数大于1W的表名跟相应的记录数都显示出来,统计就不用这么麻烦了。

如何遍历某数据库中的每一个表的总记录数


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论