Risposte:
Esistono due tipi di funzioni con valori di tabella. Uno che è solo un'istruzione select e uno che può avere più righe di un'istruzione select.
Questo non può avere una variabile:
create function Func() returns table
as
return
select 10 as ColName
Devi fare così invece:
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
mentre un MSTVF si comporta più come una stored procedure opaca (sebbene con i suoi vantaggi rispetto a sprocs). Le funzioni inline dovrebbero essere preferite rispetto a MSTVF. Se è necessario calcolare e memorizzare valori intermedi (come il risultato di un'espressione di funzione scalare complessa), utilizzare una sottoquery.