首页 新闻 会员 周边 捐助

SQL-FOR语句报错,想请教:如何识别游标里面获得的变量值?

0
悬赏园豆:5 [已解决问题] 解决于 2022-02-24 13:43

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。

eramyang的主页 eramyang | 初学一级 | 园豆:188
提问于:2022-02-22 22:57
< >
分享
最佳答案
0

这样才可以,exec('select * from '+@TABLE_NAME),如果要把查询结果存下来,需要借助实体表或者全局临时表。

收获园豆:5
清海扬波 | 小虾三级 |园豆:825 | 2022-02-23 10:04

多谢

eramyang | 园豆:188 (初学一级) | 2022-02-24 13:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册