递归查询的终止符是什么?
根据:
递归执行的语义如下:
将CTE表达式拆分为锚点和递归成员 运行锚定成员创建第一个调用或基本结果集(T0) 以Ti作为输入并以Ti + 1作为输出运行递归成员 重复步骤3,直到返回空集 返回结果集。这是T0到Tn的UNION ALL。
这是对的吗?
终止符应该是:“不返回新条目”?
答案 0 :(得分:2)
评论时间有点长。
递归CTE并不是真正的递归"该术语在其他编程语言中的使用方式。当我想到递归函数时,我会想到保存局部变量并为下一个函数调用创建一个新框架,依此类推。
相反,"递归" CTE真的是归纳的。他们从" 0"开始 - 锚 - 并重复将递归成员应用于每次迭代时创建的结果集的新行。由于归纳步骤应用于新行,因此在没有新行时会停止。
因此,当返回空集时,您对递归停止的解释是对所发生情况的恰当描述。但是,递归步骤仅适用于新行。