首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >您能在表格用户定义的函数中使用WITH语句吗?

您能在表格用户定义的函数中使用WITH语句吗?
EN

Stack Overflow用户
提问于 2008-11-20 22:30:00
回答 4查看 479关注 0票数 2

我有UDF的以下代码,但是它与消息有错误:

Msg 156,第15级,状态1,过程CalendarTable,第39行在关键字‘选项’附近不正确的语法。

是因为我的WITH语句,因为我可以在存储过程中运行相同的代码吗?

代码语言:javascript
运行
复制
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
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2008-11-26 02:09:08

不,你不能使用选项关键字。

在文档中:"MAXRECURSION可用于防止格式错误的递归CTE进入无限循环。下面的示例有意创建一个无限循环,并使用MAXRECURSION提示将递归级别的数量限制为两个。“

如果您解释了您想要查询的内容(您希望最终的结果是什么),我们可以编写一个更好的SQL语句,它不需要递归。

票数 1
EN

Stack Overflow用户

发布于 2008-11-21 00:25:40

据我所知,在UDF中不允许使用MAXRECURSION选项。在connect.microsoft.com有一个关于这个问题的项目。

票数 1
EN

Stack Overflow用户

发布于 2008-11-20 22:42:22

你是不是漏掉了一个结束托架?(“作为返回”()的结束括号

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/307122

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档