【发布时间】:2011-10-03 10:34:43
【问题描述】:
如何在表值函数中声明变量? (就像我的标题一样)
【问题讨论】:
-
内联语句还是多语句?像 MSDN 描述的那样吗?
标签: sql-server function user-defined-functions
如何在表值函数中声明变量? (就像我的标题一样)
【问题讨论】:
标签: sql-server function user-defined-functions
有两种类型的表值函数。一个只是一个 select 语句,一个可以有比一个 select 语句更多的行。
这不能有变量:
create function Func() returns table
as
return
select 10 as ColName
你必须这样做:
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,而 MSTVF 的行为更像是一个不透明的存储过程(尽管与存储过程相比有其自身的优势)。内联函数应优先于 MSTVF。如果确实需要计算和存储中间值(例如复杂标量函数表达式的结果),请使用子查询。