如何使用'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
提前感谢您的帮助
您可以试试这段代码。您可以执行实际操作,而不是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