如何使用'如果'光标内的条件?

时间:2015-05-27 08:58:51

标签: c# asp.net sql-server-2008

我想循环数据集。数据实际上是表名。表名将在循环时存储在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

提前感谢您的帮助

1 个答案:

答案 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