आपके द्वारा उपयोग किए जाने वाले तीन तरीके हैं: RETURN मान, और OUTPUT पैरामीटर और एक परिणाम सेट
यदि आप पैटर्न का उपयोग करते हैं, तो भी देखें: SELECT @Variable=column FROM table ...
यदि क्वेरी से कई पंक्तियाँ वापस आती हैं, तो आपके @Variable में केवल क्वेरी द्वारा दी गई अंतिम पंक्ति का मान होगा।
RETURN VALUE
आपकी क्वेरी के अंतरंग क्षेत्र को लौटाता है, कम से कम आपके नाम के आधार पर। आप इस ट्रिक का उपयोग कर सकते हैं:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
DECLARE @ReturnValue int
SELECT @ReturnValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN @ReturnValue
GO
और अब अपनी प्रक्रिया को कॉल करें जैसे:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC @SelectedValue = GetMyInt @Param
PRINT @SelectedValue
यह केवल INT के लिए काम करेगा, क्योंकि RETURN केवल एक ही अंतर मान वापस कर सकता है और नल शून्य में परिवर्तित हो जाते हैं।
आउटपुट पैरामीटर
आप एक आउटपुट पैरामीटर का उपयोग कर सकते हैं:
CREATE PROCEDURE GetMyInt
( @Param int
,@OutValue int OUTPUT)
AS
SELECT @OutValue=MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
और अब अपनी प्रक्रिया को कॉल करें जैसे:
DECLARE @SelectedValue int
,@Param int
SET @Param=1
EXEC GetMyInt @Param, @SelectedValue OUTPUT
PRINT @SelectedValue
आउटपुट पैरामीटर केवल एक मान वापस कर सकते हैं, लेकिन कोई भी डेटा प्रकार हो सकता है
परिणाम सेट के
लिए परिणाम सेट करें जैसी प्रक्रिया करें:
CREATE PROCEDURE GetMyInt
( @Param int)
AS
SELECT MyIntField FROM MyTable WHERE MyPrimaryKeyField = @Param
RETURN 0
GO
इसका उपयोग करें जैसे:
DECLARE @ResultSet table (SelectedValue int)
DECLARE @Param int
SET @Param=1
INSERT INTO @ResultSet (SelectedValue)
EXEC GetMyInt @Param
SELECT * FROM @ResultSet
परिणाम सेट में कई पंक्तियाँ और किसी भी डेटा प्रकार के कई कॉलम हो सकते हैं