如何使用'if'条件在游标内

本文关键字:游标 条件 if 何使用 | 更新日期: 2023-09-27 17:50:49

我想循环一组数据。数据实际上是表名。在循环时,表名将存储在临时变量中。所以我需要在if语句中使用临时变量的值。但是它显示

必须声明变量

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

提前感谢您的帮助

如何使用'if'条件在游标内

您可以试试这段代码。您可以执行实际操作,而不是PRINT根据我的理解,您正在检索游标中的所有表名。如果这些表都有记录,则需要执行一些操作。我使用了带有a参数的动态查询,来检索记录的数量。输出参数将计数返回给本地变量

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