本机内联表值函数
本机编译的表值函数返回表作为结果。本机编译函数中的代码将转换为 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
);