set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
goALTER function [dbo].[GetArticleSearchClassName](@Classid nvarchar(50))
returns varchar(100)
as
begin
declare @vStrLen int
declare @vID varchar(10)
declare @s nvarchar(100)
declare @className nvarchar(50)
declare @IntI int
--set @Operator=''
set @s=''
if (@Classid = '' or @Classid is null)
begin
return(@s)
end
else
begin
set @IntI = 0
while(@Classid <> '')
begin
IF(@IntI < 2)
BEGIN
SET @IntI = @IntI + 1
set @className=''
set @vStrLen=0
select @vStrLen=CHARINDEX( '|',@Classid)--去取字符的长度 if(@vStrLen<>0)--检索到了符号"/"
begin
select @vID=SUBSTRING(@Classid,1,@vStrLen-1) --取单个的ID
select @Classid=STUFF(@Classid,1,@vStrLen,'')--去掉前面的ID
end
else--检索没有符号"/"
begin
select @vID=@Classid --取单个的ID
select @Classid=STUFF(@Classid,1,len(@Classid),'')--去掉前面的ID
end
select @className=classname from Class where ID=@vID
if(@s<>'')
begin
set @s=@s+' => '
end
set @s=@s+@className
END
end
return(@s)
end
return(@s)
end
set QUOTED_IDENTIFIER ON
goALTER function [dbo].[GetArticleSearchClassName](@Classid nvarchar(50))
returns varchar(100)
as
begin
declare @vStrLen int
declare @vID varchar(10)
declare @s nvarchar(100)
declare @className nvarchar(50)
declare @IntI int
--set @Operator=''
set @s=''
if (@Classid = '' or @Classid is null)
begin
return(@s)
end
else
begin
set @IntI = 0
while(@Classid <> '')
begin
IF(@IntI < 2)
BEGIN
SET @IntI = @IntI + 1
set @className=''
set @vStrLen=0
select @vStrLen=CHARINDEX( '|',@Classid)--去取字符的长度 if(@vStrLen<>0)--检索到了符号"/"
begin
select @vID=SUBSTRING(@Classid,1,@vStrLen-1) --取单个的ID
select @Classid=STUFF(@Classid,1,@vStrLen,'')--去掉前面的ID
end
else--检索没有符号"/"
begin
select @vID=@Classid --取单个的ID
select @Classid=STUFF(@Classid,1,len(@Classid),'')--去掉前面的ID
end
select @className=classname from Class where ID=@vID
if(@s<>'')
begin
set @s=@s+' => '
end
set @s=@s+@className
END
end
return(@s)
end
return(@s)
end
returns varchar(100)
as
begin
declare @vStrLen int
declare @vID varchar(10)
declare @s nvarchar(100)
declare @className nvarchar(50)
declare @IntI int
--set @Operator=''
set @s=''
if (@Classid = '' or @Classid is null)
begin
return(@s)
end
else
begin
set @IntI = 0
while(@Classid <> '' and @IntI < 2)
begin
SET @IntI = @IntI + 1
set @className=''
set @vStrLen=0
select @vStrLen=CHARINDEX( '|',@Classid)--去取字符的长度 if(@vStrLen<>0)--检索到了符号"/"
begin
select @vID=SUBSTRING(@Classid,1,@vStrLen-1) --取单个的ID
select @Classid=STUFF(@Classid,1,@vStrLen,'')--去掉前面的ID
end
else--检索没有符号"/"
begin
select @vID=@Classid --取单个的ID
select @Classid=STUFF(@Classid,1,len(@Classid),'')--去掉前面的ID
end
select @className=classname from Class where ID=@vID
if(@s<>'')
begin
set @s=@s+' => '
end
set @s=@s+@className
end
end
return(@s)end
go
因为
IF(@IntI < 2)
的else没有处理
不会改变@Classid的值
而循环条件只有唯一的@Classid<>''