次の例はflightsテーブルを使用して、循環データの永久的な再帰処理を制限する方法を示します。
CREATE RECURSIVE VIEW reachable_from (destination, cost, depth) AS ( SELECT root.destination, root.cost, 0 AS depth FROM flights AS root WHERE root.source = 'Paris' UNION ALL SELECT out.destination, in.cost + out.cost, in.depth + 1 AS depth FROM reachable_from AS in, flights AS out WHERE in.destination = out.source AND in.depth <= 20);
この再帰的ビューは、次のSELECTリクエストによって問合わせが行なわれるように作成されています。
SELECT * FROM reachable_from;
この例で変数の深さは、再帰的ビュー定義のシード文の中で0に初期化され、定義の再帰的問合わせ内で1ずつ増加するカウンターとして使用されます。
WHERE句のAND条件は決して20を超過しないようにカウンターをテストします。深さカウンターは0に初期化されたため、この条件により再帰処理の循環は21に限定されます。