在Oracle中,可以使用WITH语句来定义递归查询,也可以使用递归子查询来调用递归函数。
WITH recursive_query AS (
-- 初始查询
SELECT initial_query
FROM ...
UNION ALL
-- 递归查询
SELECT recursive_query
FROM recursive_query
JOIN ...
ON ...
)
SELECT *
FROM recursive_query;
在WITH语句中,递归查询部分由UNION ALL连接,其中初识查询部分是非递归的,递归查询部分是基于前一次的查询结果进行递归的。
SELECT recursive_function(...)
FROM dual
CONNECT BY PRIOR column = column;
在递归子查询中,使用CONNECT BY PRIOR语句来指定递归条件,PRIOR关键字表示前一次的迭代结果。递归函数可以在SELECT语句中调用,返回结果通过CONNECT BY PRIOR语句进行迭代。