在SQL中的Table-returned-function中使用if语句的问题

Sta*_*ros 1 sql sql-server sql-function

我已将我的功能简化为以下内容:

create function [dbo].[UserSuperTeams](@ProjectId int) 
returns table 
as 
return 
   if @ProjectId=0
   begin 
      select TeamId from TblTeam t 
        union
      select 0 as TeamId
   end
   else
   begin
      select t.TeamId from TblTeam t
        union
      select 1 as TeamId
   end;
go
Run Code Online (Sandbox Code Playgroud)

我无法使它工作..似乎我有一些语法错误,但我无法弄清楚如何让它工作..任何想法?

Ray*_*Ray 6

如果要在函数中使用t-sql代码,则需要在'returns'部分中定义表,然后使用insert语句填充它:

create function [dbo].[UserSuperTeams](@ProjectId int) 
  returns @results table (
    TeamId int
  ) as begin

  if @ProjectId=0 begin       
    insert @results (TeamId)
      select TeamId from TblTeam t
      union      
      select 0 as TeamId   
  end   
  else begin
    insert @results (TeamId)
      select t.TeamId from TblTeam t
      union      
      select 1 as TeamId   
end;

return
end
Run Code Online (Sandbox Code Playgroud)