Câu trả lời:
Có hai hương vị của các hàm có giá trị bảng. Một chỉ là một câu lệnh select và một câu lệnh có thể có nhiều hàng hơn chỉ một câu lệnh select.
Điều này không thể có một biến:
create function Func() returns table
as
return
select 10 as ColName
Thay vào đó, bạn phải làm như thế này:
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
trong khi MSTVF hoạt động giống như một thủ tục lưu trữ không trong suốt hơn (mặc dù có những ưu điểm riêng của nó so với mầm). Các hàm nội tuyến nên được ưu tiên hơn MSTVF. Nếu bạn cần tính toán và lưu trữ các giá trị trung gian (chẳng hạn như kết quả của một biểu thức hàm vô hướng phức tạp) thì hãy sử dụng một truy vấn con.