这个是我定义的函数,我想返回一个字符串,中间用逗号分开如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别的没有了

解决方案 »

  1.   

    while @startMonth<@endMonth
    begin
    set @result=@result+convert(nvarchar,@startMonth)+','
    set @startMonth=@startMonth+1
    end
      

  2.   

    1.第二行returns nvarchar 应改为 returns nvarchar(1000)
    2.倒数第四行CONTINUE,在这里没用可以去掉
      

  3.   

    create function fun_month()
    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
      

  4.   

    我用sql调试了一下你的方法
    将 @result放入监测中,发觉每次循环 @result都已经得到正确结果
    只是最后return的时候出了问题
    才发现是你返回值设置的问题
      

  5.   

    楼上对
    修改返回值长度 returns nvarchar(1000)