कोर्स
आप डेटाबेस के रूप में Microsoft SQL Server का उपयोग करेंगे। इस ट्यूटोरियल में शामिल अवधारणा अधिकांश Relational Database Management Systems के लिए समान है, लेकिन इनके सिंटैक्स अलग होते हैं। फिर भी यहाँ जिस विचार का उपयोग किया गया है, वह सभी डेटाबेस पर अच्छी तरह लागू होता है।
Stored Procedure, Relational Database Management System (RDBMS) में SQL कथनों का एक ब्लॉक होता है, जिसे आमतौर पर प्रोग्रामर, डेटाबेस प्रशासक (Database Administrator), डेटा विश्लेषक लिखते हैं, और इसे सहेजकर कई प्रोग्रामों में पुन: उपयोग किया जाता है। विभिन्न RDBMS के अनुसार इसके अलग-अलग प्रकार भी हो सकते हैं। हालांकि किसी भी RDBMS में पाए जाने वाले दो सबसे महत्वपूर्ण Stored Procedures निम्नलिखित हैं:
- यूज़र-परिभाषित स्टोर्ड प्रोसिजर
- सिस्टम स्टोर्ड प्रोसिजर
Stored Procedure एक पूर्व-संकलित (precompiled) कोड होता है जिसे संग्रहीत या कैश किया जाता है और फिर पुन: उपयोग किया जाता है। आप पुन: उपयोग के लिए कैश किया हुआ कोड रख सकते हैं, जिससे अनुरक्षण (maintainability) काफी आसान हो जाता है; यानी इसे बार-बार बदलने की ज़रूरत नहीं पड़ती, जिससे सुरक्षा बनाए रखना संभव होता है।
तालिका बनाना
अब आप table_Employees नामक तालिका निम्नानुसार बनाएंगे।
CREATE TABLE table_Employees
(
EmployeeId INT PRIMARY KEY NOT NULL,
EmployeeFirstName VARCHAR(25) NOT NULL,
EmployeeLastName VARCHAR(25) NOT NULL,
EmployeeGender VARCHAR(25) NOT NULL,
EmployeeDepartmentID INT
)
यह तालिका किसी विशेष कंपनी के कर्मचारियों की जानकारी रखती है और इसमें निम्नलिखित कॉलम शामिल हैं:
- EmployeeId: यह प्राथमिक कुंजी (primary key) है जो अद्वितीय होती है और integer डेटा प्रकार की होती है, जहाँ मान स्वतः-वृद्धि (auto-increment) होते हैं।
- EmployeeFirstName: यह कर्मचारी का प्रथम नाम है, जो character डेटा प्रकार का है और खाली नहीं छोड़ा जा सकता।
- EmployeeLast Name: यह कर्मचारी का अंतिम नाम है, जो character डेटा प्रकार का है और खाली नहीं छोड़ा जा सकता।
- EmployeeGender: यह कर्मचारी का लिंग (Gender) दर्शाता है और यह भी character प्रकार का है।
- EmployeeDepartmentId: यह कर्मचारी के विभाग का आईडी है, जो integer डेटा प्रकार का है।
आप तालिका में मान दर्ज करने के लिए क्वेरी लिख सकते हैं। तालिका में मान जोड़ने की क्वेरी है:
INSERT INTO <TABLE_NAME>(<COLUMNS_OF_TABLE>) VALUES(<CORRESPONDING_VALUES_TO_MATCH_COLUMN>)
तालिका में मान डालने के बाद, table_Employees बन जाती है।

यूज़र-परिभाषित स्टोर्ड प्रोसिजर बनाना
Stored Procedure आपको एक बार क्वेरी लिखने देता है, और उस क्वेरी को एक नाम दिया जाता है जिसे सहेजा जा सकता है और आवश्यकता पड़ने पर कई बार चलाया जा सकता है। क्वेरियों को निष्पादित करने पर Programmabilty->Stored Procedure नाम का एक फ़ोल्डर बनता है, और उसमें dbo.uprocGetEmployees नामक फ़ाइल होती है।
Stored Procedure बनाने का सिंटैक्स है:
CREATE PROCEDURE <<<procedure_name>>>
AS
BEGIN
'''Required SQL Queries'''
END
आप निम्नलिखित SQL कथनों का उपयोग करके Stored Procedure बना सकते हैं।
- CREATE PROCEDURE procedure_name
- CREATE PROC procedure_name
साथ ही, आपको "sp_." के अलावा किसी अन्य नामकरण शैली के साथ Stored Procedure बनाना चाहिए। उदाहरण में Stored Procedure का नाम है: uprocGetEmployees।

स्टोर्ड प्रोसिजर चलाना
Stored Procedure को चलाने के लिए आप तीन में से किसी एक तरीके का उपयोग कर सकते हैं, और इसे इस प्रकार चलाएँ:
- EXEC <>
- EXECUTE <>
- <>
ऊपर दिए प्रोग्राम में, आप uprocGetEmployees नामक प्रोसिजर का उपयोग कर सकते हैं और उसे चुनकर क्वेरी चला सकते हैं।
पैरामीटर्स के साथ स्टोर्ड प्रोसिजर
Stored Procedure एकल और एकाधिक पैरामीटर्स स्वीकार कर सकता है। यदि आप पहले एकाधिक पैरामीटर्स समझ लें, तो एकल पैरामीटर्स समझना आसान होगा।
एकाधिक पैरामीटर्स के साथ Stored Procedure बनाने का सिंटैक्स:
CREATE PROCEDURE <<procedure_name>> <<procedure_parameter>>
AS
BEGIN
<<sql_query>>
END
उदाहरण से दिखता है कि नीचे दिए फ़ोल्डर में परिवर्तन हुआ है।
EMPLOYEE->Programmability->Stored Procedures->dbo.uprocGetEmployessGenderAndDepartment

यहाँ की अवधारणा, सामान्य प्रोग्रामिंग भाषाओं जैसे Python, Java आदि में फ़ंक्शन के समान है। ऊपर दिए प्रोग्राम में फ़ंक्शन या प्रोसिजर का नाम "uprocGetEmployeesGenderAndDepartment" है, जिसके पैरामीटर @EmployeeGender और @EmployeeDepartmentId हैं। इन्हें हमारी प्रोसिजर को आवश्यक मान पास करके "कॉल" किया जाता है, जो दो तरीकों में से किसी एक से किया जा सकता है, और नीचे समझाया गया है।
इस प्रोग्राम के पैरामीटर @EmployeeGender और @EmployeeDepartmentId हैं, जिन्हें पैरामीटर को मान पास करके "कॉल" किया जाता है।
मान निर्दिष्ट करने के दो तरीके हो सकते हैं। आप इनमें से किसी एक का उपयोग करके बहु-पैरामीटर वाले Stored Procedure को चला सकते हैं।
- क्वेरी में पैरामीटर नाम निर्दिष्ट करके और आवश्यक मान पास करके:

- स्थिति के आधार पर, जहाँ आपकी क्वेरी के मान Stored Procedure के पैरामीटर्स से मेल खाते हों, और आवश्यक मान पास करें:

स्टोर्ड प्रोसिजर में संशोधन
आप ALTER PROCEDURE कमांड का उपयोग करके Stored Procedure में संशोधन भी कर सकते हैं।
ALTER PROCEDURE uprocGetEmployeesGenderAndDepartment
@EmployeeGender nvarchar(25),
@EmployeeDepartmentId int
BEGIN
SELECT EmployeeFirstName,EmployeeGender,EmployeeDepartmentId FROM table_Employees WHERE
EmployeeGender = @EmployeeGender AND EmployeeDepartmentId = @EmployeeDepartmentId
END
स्टोर्ड प्रोसिजर मिटाना
Stored Procedures को निम्नलिखित कमांड्स का उपयोग करके जल्दी से मिटाया जा सकता है:
DROP PROC <> DROP PROCEDURE <>
एन्क्रिप्शन के माध्यम से सुरक्षा जोड़ना
नीचे बाईं ओर दी गई तस्वीर में दिखाया गया लॉक प्रतीक बताता है कि Stored Procedure एन्क्रिप्टेड है, जिससे केवल अधिकृत लोग ही इसे एक्सेस कर सकते हैं।

निष्कर्ष
आपने अभी-अभी यूज़र स्टोर्ड प्रोसिजर की मूल बातें सीख ली हैं और यहाँ शामिल विषय अवधारणात्मक रूप से किसी भी RDBMS के समान हैं। आप DataCamp पर उनका Intermediate SQL Server कोर्स लेकर और सीख सकते हैं। साथ ही, निम्नलिखित Stored Procedures ट्यूटोरियल भी आपके सीखने में सहायक होगा।