我需要在某些表中插入一定數量的行,並從變量中獲取值。我當然可以做一次循環插入單行,但這太簡單了。我正在尋找更優雅的解決方案。我目前的想法大約是INSERT INTO ... SELECT ...
聲明,但現在我需要一個查詢來生成我需要的行數。我試着寫遞歸CTE做到這一點:生成一定長度的結果集
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) –
您可以設置一個大於100的maxrecursion限制,但交叉加盟的CTE更好。 –