Sql server TSQL sp中超出了MaxRecursion

Sql server TSQL sp中超出了MaxRecursion,sql-server,tsql,recursion,Sql Server,Tsql,Recursion,我有这段代码,它在一定程度上可以工作,但是一旦表中有太多记录,它就会抛出“递归错误消息(超过100条)” 我的代码统计列中唯一的单词数。我已经添加了“选项(maxrecursion 0)”文本,但这没有任何区别。有人能帮忙吗 我正在使用sql server 2005(!) 我的sp是: declare @table table(name varchar(50)) insert @table values('bla bla bla ltd') insert @table values('bla p

我有这段代码,它在一定程度上可以工作,但是一旦表中有太多记录,它就会抛出“递归错误消息(超过100条)”

我的代码统计列中唯一的单词数。我已经添加了“选项(maxrecursion 0)”文本,但这没有任何区别。有人能帮忙吗

我正在使用sql server 2005(!)

我的sp是:

declare @table table(name varchar(50))
insert @table values('bla bla bla ltd')
insert @table values('bla plc ltd')
insert @table values('more text ')


declare @matchlist table(name varchar(50), replacement varchar(50))
insert @matchlist values('very good', 'good')
insert @matchlist values('good.', 'GOOD')
insert @matchlist values('nice.', 'NICE')
insert @matchlist values('-NICE', 'NICE')
insert @matchlist values('service.', 'SERVICE')
insert @matchlist values('GREAT.', 'GREAT')
insert @matchlist values('with.', 'WITH')
insert @matchlist values('WELL.', 'WELL')
insert @matchlist values('PROBLEMS.', 'PROBLEMS')

--query

select coalesce(m.replacement, a.substr) answer, count(*) count into #a
from [test_question] p

cross apply
(
  select substr from 
  dbo.f_split(p.answer, ' ')
) a 


left join
@matchlist m
on a.substr = m.name
where len(coalesce(m.replacement, a.substr))  >3
and coalesce(m.replacement, a.substr) not in ('they','with','have','been','were','house','from','isos','went','when','find','just','that','than','them','their','there')

group by coalesce(m.replacement, a.substr)

order by 2 desc

select * ,row_number()over (order by count desc) as ranking from #a
option (maxrecursion 0)
drop table #a

您已将
选项(maxrecursion 0)
放置在一个非递归的查询上。这就是它没有效果的原因


您调用的函数可能是内部递归的。您必须放置
选项(maxrecursion 0)
这里。

您需要找到一个非递归的解决方案;根据您的信息-我不认为这是一个应该从递归开始的问题。但是在给出实际答案之前,它需要关于您的模式/数据的信息,但在我看来,您似乎只需要一个基于连接的正常方法谢谢Allan。我在表中只有两列-一个ID列和一个1000行左右的“应答”列基于文本的数据-基本上是客户评论。我使用这些数据对我们的客户说得最多的单词进行排序,并将它们映射到ssrs中。当我有200行测试数据时,递归没有显示出来,但由于这一点增加了,我现在有了问题。基于此,你有什么建议吗?谢谢,保罗。谢谢你sr.这就是存储过程的全部内容,因为,开始并在开始时设置nocount,在结束时设置“END”。没有其他我调用或引用的内容-我现在不知所措。干杯。谢谢usr-按f_分割排序,感谢您的时间-轻松修复!