本机内联表值函数

本机编译的表值函数返回表作为结果。本机编译函数中的代码将转换为 C 代码并编译为 dll。版本 2016 中仅支持内联表值函数。要创建本机表值函数,你需要:

  • 使用标准的 CREATE FUNCTION 语法
  • 在函数定义中设置 NATIVE_COMPILATION 选项
  • 在函数定义中使用 SCHEMABINDING 选项

而不是标准的 BEGIN END 块,你需要使用 BEGIN ATOMIC 块:

BEGIN ATOMIC
   WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
   -- T-Sql code goes here
END

例:

CREATE FUNCTION [dbo].[udft_NativeGetBusinessDoc]
(
   @RunDate VARCHAR(25)
)
RETURNS TABLE
WITH SCHEMABINDING,
     NATIVE_COMPILATION
AS
     RETURN
(
    SELECT BusinessDocNo,
           ProductCode,
           UnitID,               
           ReasonID,
           PriceID,
           RunDate,
           ReturnPercent,
           Qty,
           RewardAmount,
           ModifyDate,
           UserID
    FROM dbo.[BusinessDocDetail_11]
    WHERE RunDate >= @RunDate
);