SQL 服务器中游标的变量范围?
Variable Scope for Cursors in SQL Server?
当我 运行 以下简单代码时,出现以下错误:"Must declare the table variable "@tableName"."
我不确定为什么:我尝试在 WHILE 语句中声明变量,但我仍然遇到同样的愚蠢错误。
我需要做的就是查询我的数据库 (myDB) 中的所有表并输出它。
DECLARE @tableName VARCHAR(80)
DECLARE TableName_Cursor CURSOR FAST_FORWARD FOR
SELECT TABLE_NAME FROM myDB.INFORMATION_SCHEMA.Tables
OPEN TableName_Cursor
FETCH NEXT FROM TableName_Cursor INTO @tableName
WHILE @@FETCH_STATUS =0
BEGIN
--DECLARE @tableName VARCHAR(80)
--USE myDB
SELECT * FROM @tableName
FETCH NEXT FROM TableName_Cursor INTO @tableName
END
CLOSE TableName_Cursor
DEALLOCATE TableName_Cursor
非常感谢您的帮助!
此处与 variable
范围无关
您需要 Dynamic SQL
才能执行此操作
Declare @sql varchar(8000)= ''
WHILE @@FETCH_STATUS =0
BEGIN
Set @sql = ''
Set @sql = 'SELECT * FROM ' +QUOTENAME(@tableName)
EXEC(@sql)
FETCH NEXT FROM TableName_Cursor INTO @tableName
END
当我 运行 以下简单代码时,出现以下错误:"Must declare the table variable "@tableName"."
我不确定为什么:我尝试在 WHILE 语句中声明变量,但我仍然遇到同样的愚蠢错误。 我需要做的就是查询我的数据库 (myDB) 中的所有表并输出它。
DECLARE @tableName VARCHAR(80)
DECLARE TableName_Cursor CURSOR FAST_FORWARD FOR
SELECT TABLE_NAME FROM myDB.INFORMATION_SCHEMA.Tables
OPEN TableName_Cursor
FETCH NEXT FROM TableName_Cursor INTO @tableName
WHILE @@FETCH_STATUS =0
BEGIN
--DECLARE @tableName VARCHAR(80)
--USE myDB
SELECT * FROM @tableName
FETCH NEXT FROM TableName_Cursor INTO @tableName
END
CLOSE TableName_Cursor
DEALLOCATE TableName_Cursor
非常感谢您的帮助!
此处与 variable
范围无关
您需要 Dynamic SQL
才能执行此操作
Declare @sql varchar(8000)= ''
WHILE @@FETCH_STATUS =0
BEGIN
Set @sql = ''
Set @sql = 'SELECT * FROM ' +QUOTENAME(@tableName)
EXEC(@sql)
FETCH NEXT FROM TableName_Cursor INTO @tableName
END