Wat is de syntaxis van een FOR
-lus in TSQL?
Antwoord 1, autoriteit 100%
T-SQL heeft geen FOR
-lus, maar een WHILE
-lus
TIJDENS (Transact-SQL)
WHILE Boolean_expression
BEGIN
END
Antwoord 2, autoriteit 92%
Er is geen for-loop, alleen de while-loop:
DECLARE @i int = 0
WHILE @i < 20
BEGIN
SET @i = @i + 1
/* do some work */
END
Antwoord 3, autoriteit 23%
Extra informatie
Om toe te voegen, aangezien niemand een antwoord heeft gepost waarin staat hoe je een dataset in een lus kunt herhalen. U kunt de trefwoorden OFFSET FETCHgebruiken .
Gebruik
DECLARE @i INT = 0;
SELECT @count= Count(*) FROM {TABLE}
WHILE @i <= @count
BEGIN
SELECT * FROM {TABLE}
ORDER BY {COLUMN}
OFFSET @i ROWS
FETCH NEXT 1 ROWS ONLY
SET @i = @i + 1;
END
Antwoord 4, autoriteit 12%
DECLARE @intFlag INT
SET @intFlag = 1
WHILE (@intFlag <=5)
BEGIN
PRINT @intFlag
SET @intFlag = @intFlag + 1
END
GO
Antwoord 5, autoriteit 3%
Wat dacht je hiervan:
BEGIN
Do Something
END
GO 10
… je zou er natuurlijk een oplopende teller in kunnen zetten als je moet tellen.
Antwoord 6, autoriteit 3%
Eenvoudig antwoord is NO !!
.
Er is geen
FOR
in SQL, maar u kuntWHILE
ofGOTO
om te bereiken
de manier waarop deFOR
zal werken.
terwijl :
DECLARE @a INT = 10
WHILE @a <= 20
BEGIN
PRINT @a
SET @a = @a + 1
END
GA :
DECLARE @a INT = 10
a:
PRINT @a
SET @a = @a + 1
IF @a < = 20
BEGIN
GOTO a
END
Ik geef altijd de voorkeur aan WHILE
boven GOTO
-statement.
Antwoord 7, autoriteit 3%
For loop wordt nog niet officieel ondersteund door SQL server. Er is al antwoordover het bereiken van de verschillende manieren van FORLoop. Ik geef een gedetailleerd antwoord op manieren om verschillende soorten lussen in de SQL-server te bereiken.
VOOR lus
DECLARE @cnt INT = 0;
WHILE @cnt < 10
BEGIN
PRINT 'Inside FOR LOOP';
SET @cnt = @cnt + 1;
END;
PRINT 'Done FOR LOOP';
Als je het weet, moet je de eerste iteratie van de lus toch voltooien, dan kun je de versie DO..WHILEof REPEAT..UNTILvan de SQL-server proberen.
DOEN..WHILE Loop
DECLARE @X INT=1;
WAY: --> Here the DO statement
PRINT @X;
SET @X += 1;
IF @X<=10 GOTO WAY;
HERHALEN..UNTIL Loop
DECLARE @X INT = 1;
WAY: -- Here the REPEAT statement
PRINT @X;
SET @X += 1;
IFNOT(@X > 10) GOTO WAY;
Antwoord 8
Probeer het, leer het:
DECLARE @r INT = 5
DECLARE @i INT = 0
DECLARE @F varchar(max) = ''
WHILE @i < @r
BEGIN
DECLARE @j INT = 0
DECLARE @o varchar(max) = ''
WHILE @j < @r - @i - 1
BEGIN
SET @o = @o + ' '
SET @j += 1
END
DECLARE @k INT = 0
WHILE @k < @i + 1
BEGIN
SET @o = @o + ' *' -- '*'
SET @k += 1
END
SET @i += 1
SET @F = @F + @o + CHAR(13)
END
PRINT @F
Met datum:
DECLARE @d DATE = '2019-11-01'
WHILE @d < GETDATE()
BEGIN
PRINT @d
SET @d = DATEADD(DAY,1,@d)
END
PRINT 'n'
PRINT @d
Antwoord 9
While Loop-voorbeeld in T-SQL met de begin- tot einddatum van de huidige maand.
DECLARE @Today DATE= GETDATE() ,
@StartOfMonth DATE ,
@EndOfMonth DATE;
DECLARE @DateList TABLE ( DateLabel VARCHAR(10) );
SET @EndOfMonth = EOMONTH(GETDATE());
SET @StartOfMonth = DATEFROMPARTS(YEAR(@Today), MONTH(@Today), 1);
WHILE @StartOfMonth <= @EndOfMonth
BEGIN
INSERT INTO @DateList
VALUES ( @StartOfMonth );
SET @StartOfMonth = DATEADD(DAY, 1, @StartOfMonth);
END;
SELECT DateLabel
FROM @DateList;