Мне нужно вставить определенное количество строк в какую-нибудь таблицу со значениями, взятыми из переменных. Я, конечно, могу сделать цикл, вставляя одну строку за раз, но это слишком просто. Я ищу более элегантное решение. Мои текущие мысли касаются порядка INSERT INTO ... SELECT ...
, но теперь мне нужен запрос, который будет генерировать количество строк, которые мне нужны. Я попытался написать рекурсивный КТР, чтобы сделать это:Создание набора результатов определенной длины
CREATE FUNCTION ufGenerateRows(@numRows INT = 1)
RETURNS @RtnValue TABLE
(
RowID INT NOT NULL
)
AS
BEGIN
WITH numbers AS
(
SELECT 1 as N
UNION ALL
SELECT N + 1
FROM numbers
WHERE N + 1 <= @numRows
)
INSERT INTO @RtnValue
SELECT N
FROM numbers
RETURN
END
GO
Он работает, но имеет предел глубины рекурсии 100, который не подходит для меня. Можете ли вы предложить альтернативы?
Возможный дубликат [SQL, вспомогательная таблица чисел] (http://stackoverflow.com/questions/10819/sql-auxiliary-table-of-numbers) –
Вы можете установить префикс 'maxrecursion' больше 100, но перекрестные присоединенные CTE лучше. –