Réponses:
Il existe deux types de fonctions de table. Une qui n'est qu'une instruction select et une qui peut avoir plus de lignes qu'une simple instruction select.
Cela ne peut pas avoir de variable:
create function Func() returns table
as
return
select 10 as ColName
Vous devez faire comme ceci à la place:
create function Func()
returns @T table(ColName int)
as
begin
declare @Var int
set @Var = 10
insert into @T(ColName) values (@Var)
return
end
VIEW
alors qu'un MSTVF se comporte plus comme une procédure stockée opaque (bien qu'avec ses propres avantages par rapport aux sprocs). Les fonctions en ligne doivent être préférées à MSTVF. Si vous avez besoin de calculer et de stocker des valeurs intermédiaires (telles que le résultat d'une expression de fonction scalaire complexe), utilisez une sous-requête.