我有这个代码在某种程度上有效,但是一旦表中有太多记录,它就会抛出"递归错误消息(超过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
答案 0 :(得分:1)
您已将option (maxrecursion 0)
放在不递归的查询上。这就是为什么它没有效果。
您调用的函数可能是内部递归的。您必须将option (maxrecursion 0)
放在那里。