SQL中的无限循环?

时间:2011-05-10 18:56:55

标签: sql infinite-loop

在SQL中有一些实现无限循环的方法吗?我在思考一些像在另一个内部的选择,递归...(也许我说的是愚蠢)

6 个答案:

答案 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来写顺序。