Asp.net 如何在sql中编写foreach语句
在SQL Server中,我编写了一个存储过程,其中声明了一个数组,如Asp.net 如何在sql中编写foreach语句,asp.net,.net,sql-server,Asp.net,.net,Sql Server,在SQL Server中,我编写了一个存储过程,其中声明了一个数组,如 declare @arr table (Position int, BTtype varchar(50)) 我已经根据条件将值插入到这个数组中,我的问题是我想检查 for each(string type in string array(BT Type)) 如何在SQL中以相同的方式进行检查 例如,我用datatypevarchar声明了一个名为type的局部变量,然后如何像上面用SQL写的For each循环那样进行检
declare @arr table (Position int, BTtype varchar(50))
我已经根据条件将值插入到这个数组中,我的问题是我想检查
for each(string type in string array(BT Type))
如何在SQL中以相同的方式进行检查
例如,我用datatype
varchar
声明了一个名为type的局部变量,然后如何像上面用SQL写的For each循环那样进行检查。。。。。。。。??我想知道如何在SQL中执行每次迭代?您可以使用SQL中的while循环进行循环。while循环的示例
DECLARE @Type varchar(50)
DECLARE c CURSOR FOR
SELECT
BType
FROM @arr
OPEN c; FETCH NEXT FROM c INTO @Type
WHILE @@FETCH_STATUS = 0
BEGIN
-- Example
UPDATE @arr SET [Position] = 0
WHERE [BType] = @Type
FETCH NEXT FROM c INTO @Type
END
CLOSE c; DEALLOCATE c;
DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=5)
BEGIN
PRINT @intFlag
SET @intFlag = @intFlag + 1
END
GO
DECLARE@intFlag INT
设置@intFlag=1
WHILE(@intFlag)请记住,游标的速度非常慢。使用WHILE
循环要好得多。@J LO:是tat吗?它会选择(@arr)中存在的BTType值吗?如果我只声明游标,它会运行(@arr)中存在的所有BTType值吗??@user3085636是的。您可以从表中获取任意数量的变量。您甚至可以调用DISTINCT[BType]或根据特定类型进行筛选(例如)。非常感谢您的回答确实帮了我很多忙:)检查您是否发布了一个您尝试执行的实际示例,我们可能会为您找到一个完全避免循环的解决方案。否则,请参见下文。