本机编译的存储过程
在使用本机编译的过程中,T-SQL 代码被编译为 dll 并作为本机 C 代码执行。要创建 Native Compiled 存储过程,你需要:
- 使用标准的 CREATE PROCEDURE 语法
- 在存储过程定义中设置 NATIVE_COMPILATION 选项
- 在存储过程定义中使用 SCHEMABINDING 选项
- 在存储过程定义中定义 EXECUTE AS OWNER 选项
而不是标准的 BEGIN END 块,你需要使用 BEGIN ATOMIC 块:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
例:
CREATE PROCEDURE usp_LoadMemOptTable (@maxRows INT, @FullName NVARCHAR(200))
WITH
NATIVE_COMPILATION,
SCHEMABINDING,
EXECUTE AS OWNER
AS
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
DECLARE @i INT = 1
WHILE @i <= @maxRows
BEGIN
INSERT INTO dbo.MemOptTable3 VALUES(@i, @FullName, GETDATE())
SET @i = @i+1
END
END
GO