zoukankan      html  css  js  c++  java
  • SQL-游标-查询数据库中的所有表的数据个数

    --sql语句-游标等使用
    
    declare @sql nvarchar(500)  
    declare @TableName nvarchar(100)  
    declare @i INT
    declare @j nvarchar(20)
    declare @cstucount INT
    --上方设置变量
    set @i = 1--初始值
    declare mCursor cursor  --设置游标
    for  --for循环
    select name from sysobjects where xtype='U'  --获取所有的表名
    open mCursor  --游标的使用开始,打开游标
    fetch NEXT from mCursor into @TableName  --for循环中获取下一条记录
    while @@fetch_status = 0   --@@fetch_status全局变量,0表示语句获取成功,-1,-2均是失败
        begin --开始
    set @sql='select @a=count(*) from ' + QUOTENAME(@TableName) --设置sql语句到变量@sql
    exec sp_executesql @sql,N'@a int output',@cstucount OUTPUT -- 执行语句,且将得到的值使用变量赋值@cstucount即为@a拿到的值
    if @cstucount>0 --如果记录数>0表示有数据,则不进行重设置标识列
    BEGIN
    print ''+Convert(nvarchar(10),@i)+'个,'+@TableName+',大于0,值为='+CONVERT(nvarchar(10),@cstucount)
    END
    ELSE
    BEGIN
    --set @sql='DBCC CHECKIDENT('+QUOTENAME(@TableName)+', RESEED, 1)' --这句查了一段时间,语句中拿的不太一样,不过这里直接给他放QUOTENAME节可以了,QUOTENAME能够将对象编程有效的字符串
    --exec(@sql) --执行语句
    print ''+Convert(nvarchar(10),@i)+'个,'+@TableName+',小于等于0,值为='+CONVERT(nvarchar(10),@cstucount)
    END
    set @i=@i+1 --设置i=i+1
            fetch NEXT from mCursor into @TableName  --拿下一个数据
        end  
    close mCursor  --关闭游标
    deallocate mCursor  --删除游标
    go  
    --显示结果  
  • 相关阅读:
    【杭电】[2016]数据的交换输出
    【杭电】[2015]偶数求和
    【杭电】[2015]偶数求和
    【杭电】[2026]首字母变大写
    【杭电】[2026]首字母变大写
    【杭电】[2075]A|B?
    【杭电】[2075]A|B?
    【杭电】[2043]密码
    【杭电】[2043]密码
    SQL 06: 内连接 (多表查询)
  • 原文地址:https://www.cnblogs.com/danlis/p/6305971.html
Copyright © 2011-2022 走看看