Sql server SQL Server:使用select语句创建动态范围的行
使用Ruby可以生成具有以下代码的数组:Sql server SQL Server:使用select语句创建动态范围的行,sql-server,select,Sql Server,Select,使用Ruby可以生成具有以下代码的数组: some_range = (1..10).to_a # Returns => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 我正在使用SELECT语句在SQLServer中寻找类似的东西。i、 e.我想制作此表: id 1 2 3 4 5 6 7 8 9 10 etc 使用类似以下内容的语句: DECLARE @ids TVP INSERT @ids (id) SELECT RANGE(0..10000) 我的用例是
some_range = (1..10).to_a
# Returns => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我正在使用SELECT语句在SQLServer中寻找类似的东西。i、 e.我想制作此表:
id
1
2
3
4
5
6
7
8
9
10
etc
使用类似以下内容的语句:
DECLARE @ids TVP
INSERT @ids
(id)
SELECT RANGE(0..10000)
我的用例是,我想要一种快速测试SP的方法,该方法将@ids作为TVP。SQL Server是否提供了实现这一点的功能?如果要生成数字表,我通常会使用这样的递归CTE:
;WITH NumberGen AS
(
SELECT 1 AS Number
UNION ALL
SELECT Number + 1 AS Number
FROM NumberGen
WHERE Number < $#RowsToBeGenerated$
)
INSERT INTO $Table$($Field$)
(
SELECT Number
FROM NumberGen
WHERE Number BETWEEN 1 AND $#RowsToBeGenerated$
)
OPTION (MAXRECURSION 0);
非常感谢。是否有任何理由使用$variable$而不是,根据约定进行sql查询?没有,我只在代码段中使用$sign作为实际值的占位符。它们没有真正的意义。我在尝试生成100多行时达到了递归堆栈的限制。在语句完成之前,已耗尽最大递归100。你知道怎么解决这个问题吗?我希望生成100k+行选项MAXRECURSION 0;应该取消递归限制。你在CTE中使用过吗?
DECLARE @Range INT = 10
;with cte
as
(
select 1 as value
union all
select value + 1 from cte where value < @Range
)
select * from cte