本機內聯表值函式

本機編譯的表值函式返回表作為結果。本機編譯函式中的程式碼將轉換為 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
);