DECLARE @TABLE_NAME varchar(50)
DECLARE My_Cursor CURSOR --定义游标
FOR (select TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME in (select TABLE_NAME from INFORMATION_SCHEMA.COLUMNS where COLUMN_NAME = 'RowVersion')) --查出需要的集合放到游标中
OPEN My_Cursor; --打开游标
FETCH NEXT FROM My_Cursor INTO @TABLE_NAME; --读取第一行数据(将INFORMATION_SCHEMA.TABLES表中的UserId放到@TABLE_NAME变量中)
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT @TABLE_NAME; --打印数据(打印INFORMATION_SCHEMA.TABLES表中的TABLE_NAME)
select * from @TABLE_NAME; --问题出在这行
FETCH NEXT FROM My_Cursor INTO @TABLE_NAME; --读取下一行数据(将INFORMATION_SCHEMA.TABLES表中的TABLE_NAME放到@UTABLE_NAME变量中)
END
CLOSE My_Cursor; --关闭游标
DEALLOCATE My_Cursor; --释放游标
GO
运行报错:
Started executing query at Line 1
Msg 1087, Level 16, State 1, Line 10
Must declare the table variable "@TABLE_NAME".
Total execution time: 00:00:00.027
我不会sql 语句,上面的sql 语句是search 到的。
我想做的是找到含RowVersion column 的 所有table name,然后对table name 进行循环,找出RowVersion=0的所有table name。
为什么在script 里面 select * from @TABLE_NAME; 不能识别@TABLE_NAME ???
PRINT @TABLE_NAME; 这个没有问题,可以成功打印出table name。
这样才可以,exec('select * from '+@TABLE_NAME),如果要把查询结果存下来,需要借助实体表或者全局临时表。
多谢