这个是我定义的函数,我想返回一个字符串,中间用逗号分开如1,2,3,4,5,6,7,8,9,10,11,12
create function fun_month()
returns nvarchar
begin
declare @startMonth int
declare @endMonth int
declare @result nvarchar(1000)
set @startMonth=2
set @endMonth=12
set @result=''
while @startMonth<@endMonth
begin
set @result=@result+convert(nvarchar,@startMonth)+','
set @startMonth=@startMonth+1
CONTINUE
end
return @result
end我这样写了,只能返回第一个,如结果是:2,3,4,5,6,7,8,9,10,12,
但只返回2别的没有了
create function fun_month()
returns nvarchar
begin
declare @startMonth int
declare @endMonth int
declare @result nvarchar(1000)
set @startMonth=2
set @endMonth=12
set @result=''
while @startMonth<@endMonth
begin
set @result=@result+convert(nvarchar,@startMonth)+','
set @startMonth=@startMonth+1
CONTINUE
end
return @result
end我这样写了,只能返回第一个,如结果是:2,3,4,5,6,7,8,9,10,12,
但只返回2别的没有了
begin
set @result=@result+convert(nvarchar,@startMonth)+','
set @startMonth=@startMonth+1
end
2.倒数第四行CONTINUE,在这里没用可以去掉
returns nvarchar(100) --此处返回值长度问题 ,其实你的方法里已经得到了正确的数据,只是返回的时候只返回了第一个,你把返回长度放长点,结果就出来了
begin
declare @startMonth int
declare @endMonth int
declare @result nvarchar(1000)
set @startMonth=2
set @endMonth=12
set @result=''
while @startMonth<@endMonth
begin
set @result=@result+convert(nvarchar,@startMonth)+','
set @startMonth=@startMonth+1
CONTINUE
end
return @result
end
将 @result放入监测中,发觉每次循环 @result都已经得到正确结果
只是最后return的时候出了问题
才发现是你返回值设置的问题
修改返回值长度 returns nvarchar(1000)