我想循环数据集。数据实际上是表名。表名将在循环时存储在temprary变量中。所以我需要在if语句中使用temprary变量的值。但它显示
必须声明变量
DECLARE TBL_Cur CURSOR
FOR ( select name from sysobjects where name like 'tbl_flat%')
DECLARE @TblName NVARCHAR(MAX);
OPEN TBL_Cur
FETCH NEXT FROM TBL_Cur INTO @TblName
WHILE (@@FETCH_STATUS <> -1)
BEGIN
if(SELECT COUNT(*) AS Count FROM @TblName ) >0
do somthing
end if
CLOSE TBL_Cur
DEALLOCATE TBL_Cur
提前感谢您的帮助
答案 0 :(得分:1)
您可以尝试使用此代码。您可以执行实际操作,而不是PRINT 根据我的理解,您正在检索游标中的所有表名。如果这些表中的每一个都有记录,那么您希望执行某些操作。我使用带有参数的动态查询来检索记录数。输出参数将计数返回到局部变量
DECLARE @TblName NVARCHAR(MAX);
DECLARE @SQL NVARCHAR(MAX);
DECLARE @count INT;
DECLARE TBL_Cur CURSOR
FOR ( select name from sysobjects where name like 'tbl_flat%')
OPEN TBL_Cur;
FETCH NEXT FROM TBL_Cur INTO @TblName
WHILE (@@FETCH_STATUS <> -1)
BEGIN
SET @SQL = N'SELECT @count = COUNT(*) FROM ' + @TblName
EXEC sp_executesql @SQL, N'@count INT OUT', @count OUT
IF(@count >0)
BEGIN
PRINT @TblName + N' : ' + STR(@count)
--Do your actions here
END
FETCH NEXT FROM TBL_Cur INTO @TblName
END
CLOSE TBL_Cur
DEALLOCATE TBL_Cur