代码之家  ›  专栏  ›  技术社区  ›  Pugal

内联函数与普通选择

  •  0
  • Pugal  · 技术社区  · 7 年前

    现在我正在学习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

    1 回复  |  直到 7 年前
        1
  •  1
  •   iamdave    7 年前

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

    因此,在您的示例中,陈述如下:

    select *
    from InlineFun (1)
    

    基本上以以下形式传递给查询引擎:

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

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

    推荐文章