Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.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
Asp.net 如何在sql中编写foreach语句_Asp.net_.net_Sql Server - Fatal编程技术网

Asp.net 如何在sql中编写foreach语句

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循环那样进行检

在SQL Server中,我编写了一个存储过程,其中声明了一个数组,如

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]或根据特定类型进行筛选(例如)。非常感谢您的回答确实帮了我很多忙:)检查您是否发布了一个您尝试执行的实际示例,我们可能会为您找到一个完全避免循环的解决方案。否则,请参见下文。