Microsoft SQL Server
Moduli compilati in modo nativo (Hekaton)
Ricerca…
Stored procedure compilate in modo nativo
In una procedura con compilazione nativa, il codice T-SQL viene compilato in dll ed eseguito come codice C nativo. Per creare una stored procedure compilata nativa è necessario:
- Utilizzare la sintassi standard CREATE PROCEDURE
- Imposta l'opzione NATIVE_COMPILATION nella definizione della stored procedure
- Utilizzare l'opzione SCHEMABINDING nella definizione della stored procedure
- Definisci l'opzione ESEGUI COME PROPRIETARIO nella definizione della procedura memorizzata
Invece del blocco BEGIN END standard, è necessario utilizzare il blocco BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Esempio:
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
Funzione scalare nativamente compilata
Il codice nella funzione compilata in modo nativo verrà trasformato in codice C e compilato come dll. Per creare una funzione scalare nativa compilata è necessario:
- Usa la sintassi CREATE FUNCTION standard
- Imposta l'opzione NATIVE_COMPILATION nella definizione della funzione
- Utilizzare l'opzione SCHEMABINDING nella definizione della funzione
Invece del blocco BEGIN END standard, è necessario utilizzare il blocco BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Esempio:
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)
Funzione valore di tabella inline nativa
La funzione valore di tabella compilato nativo restituisce la tabella come risultato. Il codice nella funzione compilata in modo nativo verrà trasformato in codice C e compilato come dll. Nella versione 2016 sono supportate solo le funzioni con valori di tabella incorporati. Per creare una funzione di valore di tabella nativa è necessario:
- Usa la sintassi CREATE FUNCTION standard
- Imposta l'opzione NATIVE_COMPILATION nella definizione della funzione
- Utilizzare l'opzione SCHEMABINDING nella definizione della funzione
Invece del blocco BEGIN END standard, è necessario utilizzare il blocco BEGIN ATOMIC:
BEGIN ATOMIC
WITH (TRANSACTION ISOLATION LEVEL=SNAPSHOT, LANGUAGE='us_english')
-- T-Sql code goes here
END
Esempio:
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
);