【发布时间】:2015-12-23 18:27:39
【问题描述】:
我有以下功能。
ALTER FUNCTION [dbo].[fnSplit] (@s VARCHAR(8000))
RETURNS table
AS
RETURN (
WITH Pieces(start, stop) AS (
SELECT 1, CHARINDEX(',', @s)
UNION ALL
SELECT stop + 1, CHARINDEX(',', @s, stop + 1)
FROM Pieces
WHERE stop > 0
)
SELECT SUBSTRING(@s, start, CASE WHEN stop > 0 THEN stop-start ELSE 8000 END) AS s
FROM Pieces
)
如果我使用非常长的字符串运行此函数,我会收到错误“在语句完成之前,最大递归 100 已用尽”。我无法应用“选项(maxrecursion 0)”,因为它给了我错误说“选项附近的语法错误”。
谁能告诉我这是什么问题?
提前致谢。
【问题讨论】:
-
使用loop/tally table/xml+cross申请拆分。无需使用递归 cte demo
-
@lad2025 是对的。不过,您如何使用
option? -
我无法使用“选项(maxrecursion 0)”。
-
我知道你遇到了错误,所以我才问你是如何使用它的。
标签: sql sql-server