Microsoft SQL Server
मूल रूप से संकलित मॉड्यूल (हेकोटन)
खोज…
मूल रूप से संकलित संग्रहित प्रक्रिया
मूल संकलन के साथ एक प्रक्रिया में, टी-एसक्यूएल कोड को मूल सी कोड के रूप में डीएल और निष्पादित करने के लिए संकलित किया जाता है। एक मूल संकलित संग्रहित प्रक्रिया बनाने के लिए आपको निम्न की आवश्यकता है:
- मानक निर्माण प्रक्रिया सिंटैक्स का उपयोग करें
- संग्रहीत कार्यविधि परिभाषा में NATIVE_COMPILATION विकल्प सेट करें
- संग्रहीत कार्यविधि परिभाषा में SCHEMABINDING विकल्प का उपयोग करें
- संग्रहीत कार्यविधि परिभाषा में 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
मूल रूप से संकलित स्केलर फ़ंक्शन
मूल रूप से संकलित फ़ंक्शन में कोड सी कोड में बदल जाएगा और डीएल के रूप में संकलित किया जाएगा। एक मूल संकलित स्केलर फ़ंक्शन बनाने के लिए आपको निम्न की आवश्यकता है:
- मानक क्रिएट फंक्शन सिंटैक्स का उपयोग करें
- फ़ंक्शन परिभाषा में 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)
मूल इनलाइन तालिका मान फ़ंक्शन
परिणाम के रूप में मूल संकलित तालिका मान फ़ंक्शन रिटर्न तालिका। मूल रूप से संकलित फ़ंक्शन में कोड सी कोड में बदल जाएगा और डीएल के रूप में संकलित किया जाएगा। केवल इनलाइन टेबल वैल्यू फ़ंक्शंस संस्करण 2016 में समर्थित हैं। एक देशी टेबल वैल्यू फंक्शन बनाने के लिए:
- मानक क्रिएट फंक्शन सिंटैक्स का उपयोग करें
- फ़ंक्शन परिभाषा में 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
);