Príklady:
-- zoznam dátumov od 1.6.2015 do 30.6.2015 DECLARE @startDate DATE, @endDate DATE; SET @startDate = '20150531'; SET @endDate = '20150630'; -- využijeme rekurziu (volanie samého seba) WITH DateRange AS ( SELECT D = dateadd(dd, 1, @startDate) WHERE dateadd(dd, 1, @startDate) <= @endDate -- D pomocna premenna UNION ALL SELECT dateadd(dd, 1, D) FROM DateRange WHERE dateadd(dd, 1, D) <= @endDate ) SELECT * FROM DateRange ; -- zoznam dni za jeden tyzden od aktuálneho dňa. Vyžijeme sparametrizovane query pomocou klauzuly WITH. -- d - vstupný parameter dynamicky vygenerovanej tabuľky TEMPTABLE -- klauzulou OPTION (MAXRECURSION 0) hovoríme interpreteru SQL, nech povolí neobmedzenú úroveň volania počas rekurzie (volanie sameho seba) WITH TEMPTABLE(d) AS ( SELECT GETDATE() UNION ALL SELECT d + 1 FROM TEMPTABLE WHERE d<(GETDATE()+6) ) SELECT CAST(d AS DATE) FROM TEMPTABLE OPTION (MAXRECURSION 0) ; -- zoznam cisel od 0 do 1000 s krokom po 10 -- využijeme rekurziu (volanie sameho seba) a s klauzulou OPTION (MAXRECURSION 100) prikážeme db serveru, že pôjdeme rekurziou max. do úrovne 100 WITH "MINUTES" AS ( SELECT 0 AS "MIN" UNION ALL SELECT "MIN"+1 FROM "MINUTES" WHERE "MIN"<100 ) SELECT "MIN" * 10 FROM "MINUTES" OPTION (MAXRECURSION 100) ;
Dúfam, že tieto zdrojové SQL kódy pomôžu mnohým programátorom a ušetria vela času pri vymýšlaní a programovaní. S pozdravom. Alojz Benďák.