不能直接整合,第一个是赋值,第二个是取记录集,按sql语法规定,不能放在一齐

解决方案 »

  1.   

    create function f_gett1(@id as varchar(100))
    returns varchar(1000)
    as 
    begin
      declare @tmp varchar(1000)
      set @tmp=''
      select top 5 @tmp=@tmp+substring(c1,1,20)+'||' from t1 id where id=@id order by id  desc
      set @tmp=left(@tmp,len(@tmp)-2)
      return(@tmp)
    end
    goselect id,dbo.f_gett1(id) from t2 p
      

  2.   

    --可以把语句1写成自定义函数
    create function f_temp() returns varchar(8000)
    as
    begin
    declare @temp varchar(8000)
    set @tmp=''
    select top 5 @tmp=@tmp+substring(c1,1,20)+'||' from t1 order id where id=p.id by id desc
    return( left(@tmp,len(@tmp)-2) )
    end
    goselect id,dbo.f_temp() from t2 p