Antworten:
Es gibt zwei Arten von Tabellenwertfunktionen. Eine, die nur eine select-Anweisung ist und eine, die mehr Zeilen als nur eine select-Anweisung enthalten kann.
Dies kann keine Variable haben:
create function Func() returns table
as
return
select 10 as ColName
Sie müssen stattdessen Folgendes tun:
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
Während sich ein MSTVF eher wie eine undurchsichtige gespeicherte Prozedur verhält (allerdings mit seinen eigenen Vorteilen im Vergleich zu Sprocs). Inline-Funktionen sollten MSTVF vorgezogen werden. Wenn Sie Zwischenwerte berechnen und speichern müssen (z. B. das Ergebnis eines komplexen Skalarfunktionsausdrucks), verwenden Sie eine Unterabfrage.