Microsoft SQL Server
Modules compilés nativement (Hekaton)
Recherche…
Procédure stockée compilée nativement
Dans une procédure avec compilation native, le code T-SQL est compilé en dll et exécuté en code C natif. Pour créer une procédure stockée compilée native, vous devez:
- Utilisez la syntaxe standard CREATE PROCEDURE
- Définissez l'option NATIVE_COMPILATION dans la définition de procédure stockée
- Utilisez l'option SCHEMABINDING dans la définition de procédure stockée
- Définir l'option EXECUTE AS OWNER dans la définition de procédure stockée
Au lieu du bloc standard BEGIN END, vous devez utiliser le bloc BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Exemple:
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
Fonction scalaire compilée nativement
Le code dans la fonction compilée nativement sera transformé en code C et compilé en dll. Pour créer une fonction scalaire native compilée, vous devez:
- Utiliser la syntaxe standard CREATE FUNCTION
- Définissez l'option NATIVE_COMPILATION dans la définition de fonction
- Utilisez l'option SCHEMABINDING dans la définition de fonction
Au lieu du bloc standard BEGIN END, vous devez utiliser le bloc BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Exemple:
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)
Fonction de valeur de table inline native
La fonction de valeur de table compilée native renvoie la table en tant que résultat. Le code dans la fonction compilée nativement sera transformé en code C et compilé en dll. Seules les fonctions de table en ligne sont prises en charge dans la version 2016. Pour créer une fonction de valeur de table native, vous devez:
- Utiliser la syntaxe standard CREATE FUNCTION
- Définissez l'option NATIVE_COMPILATION dans la définition de fonction
- Utilisez l'option SCHEMABINDING dans la définition de fonction
Au lieu du bloc standard BEGIN END, vous devez utiliser le bloc BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Exemple:
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
);