create function gettopid
  (@year char(5))
  returns int
  begin
       declare @id int
       select top 1 @id=书籍编号
       from 定单 join 定单编号 on 定单.定单编号=定单细目.定单编号
       where datepart(yyyy,日期)=@year
       group by 书籍编号
       order by sum(数量) desc
       return(case when @@rowcount=0 then 0 else @id end)
  end

解决方案 »

  1.   

    函数里不能出现两条return语句。
    所以报错。
      

  2.   

    这样也可以:create function gettopid
      (@year char(5))
      returns int
      begin
           declare @id int
           declare @out int
           select top 1 @id=书籍编号
           from 定单 join 定单编号 on 定单.定单编号=定单细目.定单编号
           where datepart(yyyy,日期)=@year
           group by 书籍编号
           order by sum(数量) desc
           if @@rowcount=0
                set @out = 0
           else
                set @out = @id
    return @out
      end