在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語句進行迭代。