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.







