【问题标题】:Inline function versus normal select内联函数与普通选择
【发布时间】:2018-12-19 16:01:32
【问题描述】:

现在我正在研究 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-2012 table-valued-parameters


    【解决方案1】:

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

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

    select *
    from InlineFun (1)
    

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

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

    所以要真正回答你的问题,函数的范围与调用它的语句的范围相同。

    【讨论】:

    • 所以,ITVF 没有发呆范围。
    • 我不知道你所说的“daze scope”是什么意思
    • 对不起@iamdave 我只是用谷歌尝试了一个短语。我的意思是 ITVF 没有特殊范围
    • @IdontKnowEnglish 没错。如果我的答案是您要找的,请标记为将来有相同问题的其他用户
    • 我会询问更多关于SQL Function的信息。继续支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2014-09-19
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多