SQL最大递归导致失败

时间:2015-06-26 23:27:37

标签: sql sql-server reporting-services ssrs-2008

我不记得我在哪里得到这个,但可能对原始海报很抱歉。我一直在使用它非常安静一段时间以获得完美的结果。然而今天我遇到了一个问题。我通过SSRS运行它,列表大约1500项。当然有人会点击“全部”,即使他们真的永远不会想要所有,但是,当他们这样做时,是错误的

  

本地报告处理期间发生错误。错误有   在报告处理期间发生。无法读取下一个数据行   数据集帐户。声明终止。最大递归   在陈述完成之前已经用尽了100个。

这里是代码:这是SQL的东西还是代码的东西?

ALTER FUNCTION [dbo].[ParseCSV] (@CSV_STR VARCHAR(8000),@Delimiter varchar(20) )
 RETURNS @splittable TABLE (ID int identity(1,1), CSVvalues VARCHAR(256) )
AS
BEGIN  

-- Check for NULL string or empty sting
    IF  (LEN(@CSV_STR) < 1 OR @CSV_STR IS NULL)
    BEGIN
        RETURN
    END

    ; WITH csvtbl(i,j)
    AS
    (
        SELECT i=1, j= CHARINDEX(@Delimiter,@CSV_STR+@Delimiter) 

        UNION ALL 

        SELECT i=j+1, j=CHARINDEX(@Delimiter,@CSV_STR+@Delimiter,j+1)
        FROM csvtbl
        WHERE CHARINDEX(@Delimiter,@CSV_STR+@Delimiter,j+1) <> 0
    )   

    INSERT  INTO @splittable  ( CSVvalues)
    SELECT  LTRIM(RTRIM(SUBSTRING(@CSV_STR,i,j-i)))
    FROM    csvtbl 

    RETURN
END 

2 个答案:

答案 0 :(得分:0)

节省每个人一些时间。它不完全是重复但相同的响应会解决它。这是一个SQL:

The maximum recursion 100 has been exhausted before statement completion error showing in SQL Query

答案 1 :(得分:0)

递归CTE的默认最大递归数为100.您需要在OPTION MAXRECURSION number语句中设置SELECT,其中数字介于0和32767之间,0表示无限制。显然要小心将数字设置为0,因为你可能会得到一个无限循环。