2013-12-10 39 views
0

在SQL Server中我已經寫了,我已經聲明如下我怎樣寫在SQL foreach語句

declare @arr table (Position int, BTtype varchar(50)) 

一個數組,我的問題是我我在這個陣列根據條件插入的值存儲過程想要檢查就像

for each(string type in string array(BT Type)) 

如何在SQL中檢查相同的方式?

例如我聲明瞭一個局部變量,稱爲type,其數據類型爲varchar,然後如何檢查上面用SQL編寫的每個循環如何........ ?? ??我想知道我們如何在SQL中執行每次迭代?

+0

檢查http://stackoverflow.com/questions/18513986/how-to-write-a-foreach-in-sql-server – MusicLovingIndianGirl

+0

如果您發佈的你試圖做一個真實的例子,我們可能會找到一個完全避免循環的解決方案。否則見下文。 –

回答

0
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; 
+3

請記住遊標非常慢。使用'WHILE'循環會更好。 – SchmitzIT

+0

@J LO:是吧?如果我只是聲明遊標將運行(@arr)中存在的所有bttype值,它會選擇(@arr)中存在的BTType值嗎? – user3085636

+0

@ user3085636是的。您可以根據需要從表格中獲取儘可能多的變量。如果需要(例如),您甚至可以調用DISTINCT [BType]或過濾特定類型。 –

0

while循環SQL的同時looping.Example環

DECLARE @intFlag INT 
SET @intFlag = 1 
WHILE (@intFlag <=5) 
BEGIN 
    PRINT @intFlag 
    SET @intFlag = @intFlag + 1 
END 
GO 

更多例如訪問此鏈接可以使用。 While loop examples.