SET
ANSI_NULLS
ON
GO
SET
QUOTED_IDENTIFIER
ON
GO
DROP
PROCEDURE
IF EXISTS [dbo].[GetTopN]
GO
CREATE
PROCEDURE
[dbo].[GetTopN]
@DatabaseName NVARCHAR(255),
@TopN
INT
AS
BEGIN
DECLARE
@TableName NVARCHAR(255)
DECLARE
@SQL NVARCHAR(
MAX
)
DECLARE
@DynamicSQL NVARCHAR(
MAX
)
CREATE
TABLE
#TableList (TableName NVARCHAR(255))
SET
@SQL =
'
INSERT INTO #TableList (TableName)
SELECT TABLE_NAME
FROM '
+ QUOTENAME(@DatabaseName) +
'.INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = '
'BASE TABLE'
'
'
EXEC
sp_executesql @SQL
SET
@DynamicSQL =
''
DECLARE
table_cursor
CURSOR
FOR
SELECT
TableName
FROM
#TableList
OPEN
table_cursor
FETCH
NEXT
FROM
table_cursor
INTO
@TableName
WHILE @@FETCH_STATUS = 0
BEGIN
SET
@SQL =
'IF EXISTS (SELECT 1 FROM '
+ QUOTENAME(@DatabaseName) +
'.[dbo].'
+ QUOTENAME(@TableName) +
') '
+
'BEGIN '
+
'SELECT TOP '
+
CAST
(@TopN
AS
NVARCHAR) +
' * FROM '
+ QUOTENAME(@DatabaseName) +
'.[dbo].'
+ QUOTENAME(@TableName) +
'; '
+
'END'
SET
@DynamicSQL = @DynamicSQL + @SQL +
CHAR
(13) +
CHAR
(10)
FETCH
NEXT
FROM
table_cursor
INTO
@TableName
END
CLOSE
table_cursor
DEALLOCATE
table_cursor
DROP
TABLE
#TableList
EXEC
sp_executesql @DynamicSQL
END
GO