您的位置:首页 > 数据库

Transact-SQL 示例 - 查询某个数据库内的所有表的记录行数及其总和

2012-12-04 15:22 519 查看
直接上SQL脚本

?
CREATE
PROCEDURE
dbo.ShowAllTableRows

@databaseNameNVARCHAR(100)

AS

BEGIN

--declare@databaseNamenvarchar(100)

--set@databaseName='tempdb'

DECLARE
@dynamicSqlNVARCHAR(4000)

SET
@dynamicSql=

N
'USE'
+@databaseName+N
';

SETNOCOUNTON;

DECLAREcurCURSORLOCAL

FORWARD_ONLYREAD_ONLY

FOR

SELECT

'
'['
'+s.name+'
']'
'

+'
'.['
'+t.name+'
']'
'TableName

FROM

sys.tablestINNERJOINsys.schemass

ONt.schema_id=s.schema_id;


OPENcur


--IFEXISTS(SELECTobject_id(N'
'tempdb..#table'
'))

--DROPTABLE#table


CREATETABLE#table(

[TableName]NVARCHAR(300)PRIMARYKEY,

[Rows]INT

)


DECLARE@tableNameVARCHAR(100)


FETCHNEXTFROMcur

INTO@tableName


WHILE@@FETCH_STATUS=0

BEGIN

DECLARE@sqlNVARCHAR(2000)

SET@sql='
'INSERTINTO#table([TableName],[Rows])VALUES('
'

SET@sql=@sql+'
''
''
''
'+@tableName+'
''
''
','
'

+'
'(SELECTCOUNT(*)FROM'
'+@tableName+'
'))'
'


execsp_executesql@sql

--print@sql


FETCHNEXTFROMcur

INTO@tableName

END


CLOSEcur

DEALLOCATEcur


SELECT*FROM#tableORDERBY[Rows]DESC

DECLARE@allRowsINT;

SET@allRows=(SELECTSUM([Rows])FROM#table);

PRINT@allRows;'
;


--PRINT@dynamicSql;

exec
sp_executesql@dynamicSql

END


执行:dbo.ShowAllTableRows'AdventureWorks'的效果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: