संग्रहीत प्रक्रिया उस तरह के उपयोग के लिए डिज़ाइन नहीं की गई है, क्योंकि यह डेटा का चयन करने के अलावा अन्य संचालन कर सकती है, यह डेटा लौटाए बिना काम कर सकती है या यह विभिन्न परिदृश्यों में अलग-अलग सेट वापस कर सकती है।
संग्रहीत कार्यविधियों के विपरीत, फ़ंक्शन अन्य प्रश्नों के साथ इनलाइन उपयोग करने के लिए बिल्कुल उपयुक्त हैं।
आपके पास दो विकल्प हैं:
ए) एक स्केलर फ़ंक्शन बनाएं जो केवल एक TeacherID
लौटाएगा और इसे अपने WHERE
. में इस्तेमाल करें
CREATE FUNCTION udfGetTeacherID
(
@lessonId int, @groupId int
)
RETURNS int
AS
BEGIN
DECLARE @teacherId INT;
SELECT @teacherId = GroupTeachers.TeacherId
FROM GroupTeachers
WHERE [email protected] AND [email protected];
RETURN @teacherId;
END
GO
बी) तालिका-मूल्यवान फ़ंक्शन बनाएं जो आपको आवश्यक सभी डेटा प्राप्त कर सके और आप इसमें शामिल (आवेदन) कर सकें।
CREATE FUNCTION udfGetTeacherName
(
@lessonId int, @groupId int
)
RETURNS TABLE
AS
RETURN
(
SELECT t.TeacherLastName, t.TeacherFirstName, t.TeacherMiddleName
FROM Teachers t
INNER JOIN GroupTeachers g ON T.TeacherID = g.TeacherID
WHERE [email protected] AND [email protected]
)
GO
यहाँ कुछ पढ़ा जा रहा है:SQL सर्वर में संग्रहीत कार्यविधि और कार्य के बीच अंतर