Özyinelemeli CTE’ye giriş

SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular

Jasmin Ludolf

Content Developer

Özyinelemeli CTE

4 bölümden oluşur:

WITH cte_name AS (

-- Başlangıç (anchor) üyesi initial_query
UNION ALL -- Özyinelemeli üye recursive_query termination_condition )
SELECT * FROM cte_name
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular

Özyinelemeli CTE kullanma rehberi

  • 100’den fazla yineleme için yineleme sınırını artırın:

    • OPTION(MAXRECURSION 32767)
  • Aşağıdaki SQL ifadelerine izin verilmez: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Başlangıç ve özyinelemeli üyenin sütun sayısı aynı olmalıdır

  • Başlangıç ve özyinelemeli üyenin veri türleri aynı olmalıdır

SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular

Özyinelemeli örnek

Faktöriyel hesaplama:

n’in faktöriyeli, n’e kadar olan pozitif tam sayıların çarpımıdır:

3! = 1 x 2 x 3 = 6

n! özyinelemeli olarak şöyle tanımlanır:

  • 0! = 1 iterasyon = 1 için
  • (n+1)! = n! * (iteration+1) iterasyon > 1 için
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular

Koddaki özyinelemeli örnek

WITH recursion AS

(SELECT 1 AS iterationCounter,1 AS factorial
UNION ALL SELECT iterationCounter+1,factorial * (iterationCounter+1) FROM recursion
WHERE iterationCounter < 10 )
SELECT factorial FROM recursion
3628800
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular

Haydi pratik yapalım!

SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular

Preparing Video For Download...