帮我看一下,这个函数为什么会截断?并没有超出长度alter function dbo.getRelateAdress(@ContentID varchar(50))
returns varchar(50)
as
begin
Declare @RelateID int,@HtmlRUL nvarchar(100)
Select @RelateID = a.ID from CMS_InfoPublish_ContentSubject a
Where a.ContentID=@ContentID
Select @HtmlRUL=(cast(a.htmlFilePath as varchar(100)) + cast(a.htmlFileName as varchar(100))) from CMS_InfoPublish_ContentSubject a Where a.ID = @RelateID
if(@HtmlRUL is null)
Select @HtmlRUL = URL from dbo.CMS_InfoPublish_Content Where ID = @ContentID
return @HtmlRUL
end
returns varchar(50)
as
begin
Declare @RelateID int,@HtmlRUL nvarchar(100)
Select @RelateID = a.ID from CMS_InfoPublish_ContentSubject a
Where a.ContentID=@ContentID
Select @HtmlRUL=(cast(a.htmlFilePath as varchar(100)) + cast(a.htmlFileName as varchar(100))) from CMS_InfoPublish_ContentSubject a Where a.ID = @RelateID
if(@HtmlRUL is null)
Select @HtmlRUL = URL from dbo.CMS_InfoPublish_Content Where ID = @ContentID
return @HtmlRUL
end
--一眼看上去没问题
--改改函数的返回长度
returns varchar(200)--或者在赋值时指定top1试试
--比如
Select top 1 @HtmlRUL = URL from dbo.CMS_InfoPublish_Content Where ID = @ContentID
改成
returns varchar(8000)
returns varchar(50)
as
begin
Declare @RelateID int,@HtmlRUL nvarchar(100) Select @RelateID = a.ID from CMS_InfoPublish_ContentSubject a
Where a.ContentID=@ContentID
Select @HtmlRUL=(cast(a.htmlFilePath as varchar(100)) + cast(a.htmlFileName as varchar(100))) from CMS_InfoPublish_ContentSubject a Where a.ID = @RelateID
if(@HtmlRUL is null)
Select @HtmlRUL = URL from dbo.CMS_InfoPublish_Content Where ID = @ContentID
return @HtmlRUL
end
改成一样的
Select @HtmlRUL = URL from dbo.CMS_InfoPublish_Content Where ID = @ContentID这一句你单独查询一下就可以看出是否超长了:Select len(URL) from dbo.CMS_InfoPublish_Content Where ID = '实际ID'
returns varchar(1000)as
begin
Declare @RelateID int,@HtmlRUL nvarchar(1000) Select @RelateID = a.ID from CMS_InfoPublish_ContentSubject a
Where a.ContentID=@ContentID
Select @HtmlRUL=(cast(a.htmlFilePath as varchar(100)) + cast(a.htmlFileName as varchar(100))) from CMS_InfoPublish_ContentSubject a Where a.ID = @RelateID
if(@HtmlRUL is null)
Select @HtmlRUL = URL from dbo.CMS_InfoPublish_Content Where ID = @ContentID
return @HtmlRUL
end
returns varchar(50) 的原因