Oracle再帰関数の呼び出し方法
Oracleでは、再帰クエリを定義するWITH句と再帰関数を呼び出す再帰副問い合わせを使用できます。
- 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文で反復処理されます。