我不记得我在哪里得到这个,但可能对原始海报很抱歉。我一直在使用它非常安静一段时间以获得完美的结果。然而今天我遇到了一个问题。我通过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
答案 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,因为你可能会得到一个无限循环。