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  
--顯示結果  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM