在Oracle中,可以使用WITH語句來定義遞歸查詢,也可以使用遞歸子查詢來調(diào)用遞歸函數(shù)。
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連接,其中初識查詢部分是非遞歸的,遞歸查詢部分是基于前一次的查詢結(jié)果進行遞歸的。
SELECT recursive_function(...)
FROM dual
CONNECT BY PRIOR column = column;
在遞歸子查詢中,使用CONNECT BY PRIOR語句來指定遞歸條件,PRIOR關鍵字表示前一次的迭代結(jié)果。遞歸函數(shù)可以在SELECT語句中調(diào)用,返回結(jié)果通過CONNECT BY PRIOR語句進行迭代。