首页 > 解决方案 > 内联函数与普通选择

问题描述

现在我正在研究SQL Server 2012中的函数。我知道有三种函数类型。但我很困惑Inline Table-Value Functions

让我解释。

select * into Number 
from (
 values 
  (1, 'A'),(2, 'B'),(3, 'C')
) number (N, C)

create function InlineFun (@i int)
returns table
as
return (select * from Number where n = @i)

select * from Number where n = 1
select * from InlineFun (1)

从上面select的结果是一样的。那么Inline TVF..的确切范围是什么?

笔记 :

我在用Microsoft SQL Server 2012

标签: sql-server-2012table-valued-parameters

解决方案


可以将 aITVF视为view可以将参数传递给的。它本质上包含在您的脚本中,就像它是普通的旧 SQL 一样引用它,然后执行。这就是为什么它们比必须作为单独语句执行的多语句表值函数执行得更好的原因。

因此,在您的示例中,声明:

select *
from InlineFun (1)

本质上是传递给查询引擎的:

select *
from (select *
      from Number
      where n = 1
     ) as a

因此,要实际回答您的问题,函数的范围与调用它的语句的范围相同。


推荐阅读