Microsoft SQL Server
Geïnstalleerde modules (Hekaton)
Zoeken…
Oorspronkelijk gecompileerde opgeslagen procedure
In een procedure met native compilatie wordt T-SQL-code gecompileerd naar dll en uitgevoerd als native C-code. Om een native gecompileerde opgeslagen procedure te maken, moet u:
- Gebruik de standaard syntaxis CREATE PROCEDURE
- Stel de optie NATIVE_COMPILATION in de definitie van de opgeslagen procedure in
- Gebruik de optie SCHEMABINDING in de definitie van de opgeslagen procedure
- Definieer de optie UITVOEREN ALS EIGENAAR in de definitie van de opgeslagen procedure
In plaats van het standaard BEGIN END-blok, moet u het BEGIN ATOMIC-blok gebruiken:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Voorbeeld:
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
Van nature gecompileerde scalaire functie
Code in native gecompileerde functie wordt omgezet in C-code en gecompileerd als dll. Om een native gecompileerde scalaire functie te maken, moet u:
- Gebruik de standaard CREATE FUNCTION-syntaxis
- Stel de NATIVE_COMPILATION-optie in de functiedefinitie in
- Gebruik de optie SCHEMABINDING in de functiedefinitie
In plaats van het standaard BEGIN END-blok, moet u het BEGIN ATOMIC-blok gebruiken:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Voorbeeld:
CREATE FUNCTION [dbo].[udfMultiply]( @v1 int, @v2 int )
RETURNS bigint
WITH NATIVE_COMPILATION, SCHEMABINDING
AS
BEGIN ATOMIC WITH (TRANSACTION ISOLATION LEVEL = SNAPSHOT, LANGUAGE = N'English')
DECLARE @ReturnValue bigint;
SET @ReturnValue = @v1 * @v2;
RETURN (@ReturnValue);
END
-- usage sample:
SELECT dbo.udfMultiply(10, 12)
Native inline tabel waardefunctie
Native gecompileerde tabelwaardefunctie retourneert tabel als resultaat. Code in native gecompileerde functie wordt omgezet in C-code en gecompileerd als dll. Alleen inline-tabel gewaardeerde functies worden ondersteund in versie 2016. Om een native tabelwaardefunctie te maken, moet u:
- Gebruik de standaard CREATE FUNCTION-syntaxis
- Stel de NATIVE_COMPILATION-optie in de functiedefinitie in
- Gebruik de optie SCHEMABINDING in de functiedefinitie
In plaats van het standaard BEGIN END-blok, moet u het BEGIN ATOMIC-blok gebruiken:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Voorbeeld:
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
);