【发布时间】:2014-02-03 10:40:06
【问题描述】:
您将在下面看到一个游标,用于计算 AdventureWorks2012 的每个表中的行数。现在,我正在尝试使用 WHILE LOOP 来获得相同的结果。但是,我遇到了麻烦,谁能帮帮我。
DECLARE @table sysname
DECLARE @SCHEMA SYSNAME
DECLARE @COUNT INT
DECLARE @STR VARCHAR(200)
CREATE TABLE #REC(COUNT INT)
CREATE TABLE #REC1(SCHEMA_NAME VARCHAR(100),TABLE_NAME VARCHAR(100), COUNT INT)
DECLARE TableCursor CURSOR LOCAL FAST_FORWARD FOR
SELECT table_schema, table_name
FROM AdventureWorks2012.[INFORMATION_SCHEMA].[TABLES]
WHERE TABLE_TYPE ='BASE TABLE'
ORDER BY table_schema
OPEN TableCursor FETCH NEXT FROM TableCursor INTO @SCHEMA, @table;
WHILE (@@FETCH_STATUS = 0)
BEGIN
SET @STR='SELECT COUNT (*) FROM AdventureWorks2012.'+@SCHEMA+'.'+@table;
INSERT INTO #REC
EXEC(@STR)
SELECT @COUNT=COUNT FROM #REC
PRINT @COUNT
INSERT INTO #REC1 VALUES(@SCHEMA,@table,@COUNT)
FETCH NEXT FROM TableCursor INTO @SCHEMA, @table;
END
CLOSE TableCursor;
DEALLOCATE TableCursor;
SELECT * FROM #REC1
DROP TABLE #REC
DROP TABLE #REC1
非常感谢您的帮助。
【问题讨论】:
标签: sql while-loop cursor sql-server-2012