संग्रहीत कार्यविधियाँ SQL कथनों का एक बैच है जिसे दो तरीकों से निष्पादित किया जा सकता है। अधिकांश प्रमुख डीबीएम संग्रहीत कार्यविधियों का समर्थन करते हैं; हालांकि, सभी नहीं करते हैं। विशिष्टताओं के लिए आपको अपने विशेष DBMS सहायता दस्तावेज़ों से सत्यापित करने की आवश्यकता होगी। जैसा कि मैं SQL सर्वर से सबसे अधिक परिचित हूं, मैं इसे अपने नमूने के रूप में उपयोग करूंगा।
एक संग्रहीत कार्यविधि बनाने के लिए वाक्य रचना काफी सरल है:
CREATE PROCEDURE <owner>.<procedure name>
<Param> <datatype>
AS
<Body>
तो उदाहरण के लिए:
CREATE PROCEDURE Users_GetUserInfo
@login nvarchar(30)=null
AS
SELECT * from [Users]
WHERE ISNULL(@login,login)=login
संग्रहीत प्रक्रियाओं का एक लाभ यह है कि आप डेटा एक्सेस लॉजिक को एक ही स्थान पर केंद्रीकृत कर सकते हैं जो तब डीबीए के अनुकूलन के लिए आसान है। संग्रहीत प्रक्रियाओं में एक सुरक्षा लाभ भी होता है जिसमें आप संग्रहीत कार्यविधि को निष्पादन अधिकार प्रदान कर सकते हैं लेकिन उपयोगकर्ता को अंतर्निहित तालिकाओं पर पढ़ने/लिखने की अनुमति की आवश्यकता नहीं होगी। एसक्यूएल इंजेक्शन के खिलाफ यह एक अच्छा पहला कदम है।
संग्रहीत प्रक्रियाएं डाउनसाइड्स के साथ आती हैं, मूल रूप से आपके मूल सीआरयूडी ऑपरेशन से जुड़े रखरखाव। मान लें कि प्रत्येक तालिका के लिए आपके पास प्राथमिक कुंजी के आधार पर एक सम्मिलित करें, अद्यतन करें, हटाएं और कम से कम एक चयन करें, जिसका अर्थ है कि प्रत्येक तालिका में 4 प्रक्रियाएं होंगी। अब 400 टेबल का एक अच्छा आकार का डेटाबेस लें, और आपके पास 1600 प्रक्रियाएं हैं! और यह माना जा रहा है कि आपके पास डुप्लीकेट नहीं हैं जो आप शायद करेंगे।
यह वह जगह है जहां आपके मूल सीआरयूडी संचालन को स्वत:उत्पन्न करने के लिए ओआरएम या किसी अन्य विधि का उपयोग करने से योग्यता का एक टन होता है।