在SQL中有一些实现无限循环的方法吗?我在思考一些像在另一个内部的选择,递归...(也许我说的是愚蠢)
答案 0 :(得分:11)
您可以使用CTE执行递归无限循环:
;with rec as
(
select 1 as n
union all
select n + 1
from rec
)
select n
from rec
默认情况下,SQL Server将停在100;你可以永远循环:
option (maxrecursion 0)
答案 1 :(得分:6)
WHILE 1=1
BEGIN
SELECT 'This will go forever'
END
答案 2 :(得分:3)
这应该在oracle中起作用
select * from (select level x from dual connect by level >=0)
需要外部选择以避免在客户端和数据库的某些组合中发生某些优化。
不完全确定level >= 0
部分是否按预期工作,因为通常只会使用level <= 50
之类的内容来获取固定数量的行。
答案 3 :(得分:2)
我无法想象您为什么要这样做,但它将取决于您的实现的(SQL Server,Oracle,MySQL ......)支持的循环结构。
例如,在SQL Server中,您将按照任何命令式语言的方式编写无限循环。大致是:
DECLARE @x INT = 0
WHILE (@x = 0)
BEGIN
PRINT @x
END
答案 4 :(得分:1)
DECLARE @number INT = 3
WHILE (@number = 3)
BEGIN
PRINT @number
END
答案 5 :(得分:0)
你不能用像SQL这样的语法来创建一个无限循环,因为编译器不会让你。您将收到错误消息和/或它将无法运行。
你需要做一些类似于JNK建议的事情,使用SQL来写顺序。