Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在光标内使用“if”条件?_C#_Asp.net_Sql Server 2008 - Fatal编程技术网

C# 如何在光标内使用“if”条件?

C# 如何在光标内使用“if”条件?,c#,asp.net,sql-server-2008,C#,Asp.net,Sql Server 2008,我想循环一组数据。数据实际上是表名。循环时,表名将存储在临时变量中。所以我需要在if语句中使用临时变量的值。但它表明 必须声明变量 提前感谢您的帮助您可以尝试此代码。您可以执行实际操作,而不是打印 根据我的理解,您正在检索游标中的所有表名。如果这些表中的每个表都有记录,那么您需要执行一些操作。我使用带有参数的动态查询来检索记录数。输出参数将计数返回到局部变量 DECLARE @TblName NVARCHAR(MAX); DECLARE @SQL NVARCHAR(MAX); DECLARE

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

必须声明变量


提前感谢您的帮助

您可以尝试此代码。您可以执行实际操作,而不是打印 根据我的理解,您正在检索游标中的所有表名。如果这些表中的每个表都有记录,那么您需要执行一些操作。我使用带有参数的动态查询来检索记录数。输出参数将计数返回到局部变量

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

请显示您尝试的内容您需要声明变量,@charu您需要在问题中添加sql语句,其他方面我们可以为您提供帮助吗?这行显示错误“ifSELECT COUNT*AS COUNT FROM@TblName>0”@TblName不是表变量,它是字符串。不能在select语句中仅使用表名变量。OP不在表名长度之后。。。他们关注的是表格中的行数刚刚编辑了我的答案,希望这就是你想要实现的
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