【发布时间】:2008-11-20 22:30:00
【问题描述】:
我有以下 UDF 代码,但消息出错:
消息 156,级别 15,状态 1,程序 CalendarTable,第 39 行不正确 关键字“OPTION”附近的语法。
是因为我的 WITH 语句可以在存储过程中正常运行相同的代码吗?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Anthony Main
-- Create date: 18/11/08
-- Description: Produce Table of Dates for Month
-- =============================================
CREATE FUNCTION CalendarTable
(
@StartDate DATETIME,
@EndDate DATETIME
)
RETURNS TABLE
AS
RETURN
(
with MyCalendar as
(
select cast(@StartDate as datetime) DateValue
union all
select DateValue + 1
from MyCalendar
where DateValue + 1 <= @EndDate
)
select DateValue
, datepart(dy, DateValue) [day of year]
, datename(dw, DateValue) [day]
, datepart(dw, DateValue-1) [day of week]
, datepart(dd, DateValue) [day of month]
, datepart(ww, DateValue) [week]
, datepart(mm, DateValue) [month]
, datename(mm, DateValue) [month]
, datepart(qq, DateValue) [quarter]
, datepart(yy, DateValue) [year]
, datepart(HH, DateValue) [HOUR]
, datepart(MI, DateValue) [MIN]
, datepart(SS, DateValue) [SEC]
, datepart(MS, DateValue) [MILLISECOND]
from MyCalendar
OPTION (MAXRECURSION 0)
)
GO
【问题讨论】:
标签: sql sql-server-2005 tsql