类型不会在锚点和递归查询列中的递归部分之间匹配

时间:2015-11-16 06:26:36

标签: common-table-expression

CREATE FUNCTION [dbo].FN_GET_ALL_DATES_WITH_DAY_NAME    
(         
    @DateFrom varchar(25)    
    ,@DateTo varchar(25)    
    ,@DayName varchar(25)    
)

RETURNS

@ParsedList table    
(    
    ListValue varchar(25)
)

AS

BEGIN
;WITH ALLDATES ( date )
AS
(
    SELECT @DateFrom 
    UNION ALL
    SELECT DATEADD(d,1,date)
    FROM ALLDATES
    WHERE date < @DateTo
)

SELECT date FROM ALLDATES WHERE DATENAME(dw, date) = @DayName

RETURN 

END

我遇到了这个错误:

  

消息240,级别16,状态1,过程FN_GET_ALL_DATES_WITH_DAY_NAME,   第18行类型在锚点和递归部分之间不匹配   专栏&#34;日期&#34;递归查询&#34; ALLDATES&#34;。

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:1)

@DateFrom是一个varchar而DATEADD函数返回smalldatetime。

您还尝试比较日期&#39;您的CTE中的列@DateTo也是一个varchar。

尝试显式匹配参数和其他列的数据类型。