在引入 SQLScript 递归逻辑之前,如果需要在 SQLScript 过程或函数中使用任何递归运算,则必须使用迭代逻辑将其重写为运算。SQLScript 现在支持递归逻辑,允许您编写过程或函数,在满足中止条件之前在其主体内调用自身。
示例代码create procedure factorial_proc(in i int, out j int) as begin if :i <= 1 then j = 1; else call factorial_proc(:i-1, j); j = :i * :j; end if;end; call factorial_proc(0, ?);call factorial_proc(1, ?);call factorial_proc(4, ?);call factorial_proc(10, ?); create function factorial_func(i int) returns j int as begin if :i <= 1 then j = 1; else j = :i * factorial_func(:i-1); end if;end; select factorial_func(0) from dummy;select factorial_func(1) from dummy;select factorial_func(4) from dummy;select factorial_func(10) from dummy; create function factorial_func2(i int) returns table(a int) as begin if :i <= 1 then return select 1 as a from dummy; else return select :i * a as a from factorial_func2(:i - 1); end if;end; select * from factorial_func2(0);select * from factorial_func2(1);select * from factorial_func2(4);select * from factorial_func2(10);
以下限制适用: