MSSQL_CTE 遞迴 應用---年曆

  • 5060
  • 0

摘要:MSSQL_CTE 遞迴 應用---年曆

轉於http://itgroup.blueshop.com.tw/benchenBEN/blog?n=convew&i=419098

偷偷發現偷偷抄來,拜託請不要計較

 

----------產生2012年 的年曆
WITH CTETEST AS
(
 SELECT CAST('2012/01/01' as smalldatetime) AS Start
 UNION ALL
 SELECT Start + 1
 FROM CTETEST
 WHERE Start < '2012/12/31 00:00:00' 
)
SELECT START,DATENAME(WEEKDAY,start)
FROM CTETEST
OPTION (MAXRECURSION 0);  ---要加 hint : OPTION (MAXRECURSION 0)  表示 遞迴為無限制

/*伺服器範圍的預設值是 100。設0 為無限制,若沒設, 則遞迴層級 若超過預設的100 會報錯 如下

訊息 530,層級 16,狀態 1,行 2
陳述式已結束。最大遞迴 100 已在陳述式完成之前用盡

*/
----------------------------------------------