SQL自定义函数:循环不停止?

ay_xiaoya 2007-12-21 03:57:32
Hotel表有一列Brief是酒店介绍,text类型,字段中的数据带HTML标签
使用分页控件AspnetPager,分页显示多个截取Brief列内容一定长度的介绍的记录,写了一个SQL函数去Brief中的标记,但是执行后长时间执行无结果,怀疑是循环有问题,贴出如下,请高手指正
--函数
create function dbo.a(@start int,@end int,@text varchar(2000) ,@b varchar(2000))
returns varchar(2000)
as
begin
while(@start!=0)
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX('<',@b)

end
return @b
end

--执行
declare @start int,@end int,@text varchar(2000),@b varchar(2000)

select @text=sHotel_Brief from Hotel_Info where id=2
set @text=replace(@text,' ','')

select @start=CHARINDEX('<',@text)
from Hotel_Info
where id=2

select @end=CHARINDEX('>',@text)
from Hotel_Info
where id=2
select dbo.a(@start,@end,@text,@b)
--删除
drop function dbo.a
...全文
236 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
-狙击手- 2007-12-21
  • 打赏
  • 举报
回复



while(@start!=0)
begin
set @b= substring(@text,@start+1,len(@text))
set @start=CHARINDEX(' <',@b)

end

wzy_love_sly 2007-12-21
  • 打赏
  • 举报
回复
1
wzy_love_sly 2007-12-21
  • 打赏
  • 举报
回复
最少也要加
while(@start!=0)
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)
set @start =@start+1
end
JL99000 2007-12-21
  • 打赏
  • 举报
回复
while(@start!=0)
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)
如果由这句set @start=CHARINDEX(' <',@b)返回的结果是>0的,
那么将继续从
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)
end
执行
执行没个完
把这处理一下吧


JL99000 2007-12-21
  • 打赏
  • 举报
回复
while(@start!=0)
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)
如果由这句set @start=CHARINDEX(' <',@b)返回的结果是>0的,
那么将继续从
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)
end
执行
执行没个完
把这处理一下吧


JL99000 2007-12-21
  • 打赏
  • 举报
回复
while(@start!=0)
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)
如果由这句set @start=CHARINDEX(' <',@b)返回的结果是>0的,
那么将继续从
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)
end
执行
执行没个完
把这处理一下吧


ay_xiaoya 2007-12-21
  • 打赏
  • 举报
回复
能指点一下怎么改正吗
@b@start都是变量,每次我也都有赋值,怎么不行呢
dobear_0922 2007-12-21
  • 打赏
  • 举报
回复
死循环,@b的值一直没变,@start的值也没变,,,
while(@start!=0) 
begin
set @b= substring(@text,@end+1,len(@text))
set @start=CHARINDEX(' <',@b)

end

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧