2012-10-17 18 views
8

, wie aus einer while-Schleife
meine Schleife wie diesererstellen while-Schleife mit CTE

declare @ind as int 
    declare @code as nvarchar 
    set @ind = 0 
    while @ind < 884 
    begin 
    select @ind = @ind + 1 
    --here execute Procedure 
     --and set return value to variable 
    set @code = cast (@ind as nvarchar) 
    end 
+0

ist eine rekursive cte auf jeden Fall erforderlich? - Es ist eine Struktur, die ich verwenden würde, wenn ich versuche, Gesamtsummen auszuführen oder einen Baum wie eine Datenstruktur zu durchlaufen ... für eine einfache Schleife ist "while" genau richtig. – whytheq

+0

Sie benötigen das Ergebnis als Tabelle oder als einzelne Zeichenfolge? – TechDo

+0

Sie können eine gespeicherte Prozedur nicht als Teil einer Abfrage aufrufen * - Sie müssten die Definition der gespeicherten Prozedur in diese Abfrage erweitern - möchten Sie das tun? –

Antwort

3

Wenn Sie brauchen Tabelle:

;WITH Sec(Number) AS 
(
    SELECT 0 AS Number 
    UNION ALL 
    SELECT Number + 1 
    FROM Sec 
    WHERE Number < 884 
) 

SELECT * FROM Sec 
OPTION(MAXRECURSION 0) 

Wenn Sie eine Zeichenfolge:

;WITH Sec(Number) AS 
(
    SELECT 0 AS Number 
    UNION ALL 
    SELECT Number + 1 
    FROM Sec 
    WHERE Number < 884 
) 

SELECT STUFF(a.[Str], 1, 1, '') 
FROM 
(
    SELECT (SELECT ',' + CAST(Number AS NVARCHAR(3)) 
    FROM Sec 
    FOR XML PATH(''), TYPE 
    ).value('.','varchar(max)') AS [Str] 
) AS a 
OPTION(MAXRECURSION 0) 
5

Below Abfrage wählt Werte 0-884 SQL Server CTE erstellen:

;WITH T(Num)AS 
(
    SELECT 0 
    UNION ALL 
    SELECT Num+1 FROM T WHERE T.Num < 884 
)SELECT Num FROM T 
OPTION (MAXRECURSION 0);