수색…


네이티브 컴파일 된 저장 프로 시저

원시 컴파일을 사용하는 절차에서 T-SQL 코드는 dll로 컴파일되고 원시 C 코드로 실행됩니다. 네이티브 컴파일 저장 프로 시저를 만들려면 다음을 수행해야합니다.

  • 표준 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

기본적으로 컴파일 된 스칼라 함수

기본적으로 컴파일 된 함수의 코드는 C 코드로 변환되어 dll로 컴파일됩니다. 원시 컴파일 된 스. 라 함수를 작성하려면 다음을 수행해야합니다.

  • 표준 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].[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)

네이티브 인라인 테이블 값 함수

기본 컴파일 된 테이블 값 함수는 결과로 테이블을 반환합니다. 기본적으로 컴파일 된 함수의 코드는 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
);


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow