Ответ 1
Вы можете попробовать следующее:
DECLARE @i int = 0
WHILE @i < 300
BEGIN
SET @i = @i + 1
/* your code*/
END
Я хотел бы вставить значение, полученное из счетчика в SQL, и повторить его 300 раз.
Что-то вроде:
DECLARE @Counter = 0;
-- BEGIN Loop
SET @Counter = @Counter + 1
INSERT INTO tblFoo VALUES(@Counter)
-- REPEAT 300 times
Как я могу это достичь? Благодаря
Вы можете попробовать следующее:
DECLARE @i int = 0
WHILE @i < 300
BEGIN
SET @i = @i + 1
/* your code*/
END
DECLARE @first AS INT = 1
DECLARE @last AS INT = 300
WHILE(@first <= @last)
BEGIN
INSERT INTO tblFoo VALUES(@first)
SET @first += 1
END
Я бы вообще избегал циклов, если мог, устанавливать подходы гораздо эффективнее:
INSERT INTO tblFoo
SELECT TOP (300) n = ROW_NUMBER()OVER (ORDER BY [object_id])
FROM sys.all_objects ORDER BY n;
В ssms мы можем использовать GO для выполнения того же оператора
Edit Это означает, что если вы положили
some query
GO n
Некоторые запросы будут выполняться n раз
Нашли несколько разных ответов, которые я объединил для решения проблемы simulair:
CREATE TABLE nummer (ID INTEGER PRIMARY KEY, num, text, text2);
WITH RECURSIVE
for(i) AS (VALUES(1) UNION ALL SELECT i+1 FROM for WHERE i < 1000000)
INSERT INTO nummer SELECT i, i+1, "text" || i, "otherText" || i FROM for;
Добавляет 1 miljon rows с