संग्रहीत प्रक्रिया बनाम कार्य
संग्रहीत कार्यविधियाँ और कार्य दो प्रकार के प्रोग्रामिंग ब्लॉक हैं। उन दोनों के पास बुलाने वाले नाम होने चाहिए। उन कॉलिंग नामों का उपयोग उन्हें किसी अन्य प्रोग्रामिंग ब्लॉक के अंदर कॉल करने के लिए किया जाता है जैसे प्रक्रिया फ़ंक्शन और पैकेज या SQL क्वेरी। ये दोनों ऑब्जेक्ट प्रकार पैरामीटर स्वीकार करते हैं और उन ऑब्जेक्ट्स के पीछे कार्य करते हैं। यह एक संग्रहीत कार्यविधि बनाने के लिए सिंटैक्स (ORACLE में) है, प्रक्रिया प्रक्रिया नाम (पैरामीटर) बनाएं या बदलें
जैसा
शुरू
बयान;
अपवाद
अपवाद_हैंडलिंग
अंत;
और यहां फ़ंक्शन बनाने के लिए सिंटैक्स है (ओरेकल में), फ़ंक्शन बनाएं या बदलें function_name (पैरामीटर)
रिटर्न रिटर्न_डेटाटाइप
जैसा
शुरू
बयान;
रिटर्न रिटर्न_वैल्यू/वेरिएबल;
अपवाद;
अपवाद_हैंडलिंग;
अंत;
संग्रहीत प्रक्रिया
जैसा कि ऊपर बताया गया है, संग्रहित प्रक्रियाओं को प्रोग्रामिंग ब्लॉक नाम दिया गया है। वे प्रक्रिया के पीछे तर्क के अनुसार उपयोगकर्ता इनपुट और प्रक्रिया के रूप में पैरामीटर स्वीकार करते हैं और परिणाम देते हैं (या एक विशिष्ट क्रिया करते हैं)। ये पैरामीटर IN, OUT और INOUT प्रकार के हो सकते हैं। वेरिएबल डिक्लेरेशन, वेरिएबल असाइनमेंट, कंट्रोल स्टेटमेंट, लूप, SQL क्वेरी और अन्य फंक्शन/प्रक्रिया/पैकेज कॉल्स प्रक्रियाओं के मुख्य भाग के अंदर हो सकते हैं।
कार्य
कार्यों को प्रोग्रामिंग ब्लॉक भी कहा जाता है, जिन्हें रिटर्न स्टेटमेंट का उपयोग करके एक मान वापस करना होगा, और इससे पहले कि यह एक मूल्य लौटाए, इसका शरीर कुछ क्रियाएं भी करता है (दिए गए तर्क के अनुसार)। कार्य भी चलाने के लिए पैरामीटर स्वीकार करते हैं। प्रश्नों के अंदर कार्यों को बुलाया जा सकता है। जब किसी फ़ंक्शन को SELECT क्वेरी के अंदर कॉल किया जाता है, तो यह SELECT क्वेरी के परिणाम सेट की प्रत्येक पंक्ति पर लागू होता है। ORACLE फ़ंक्शन की कई श्रेणियां हैं। वे हैं,
एकल पंक्ति फ़ंक्शन (क्वेरी की प्रत्येक पंक्ति के लिए एकल परिणाम देता है)
एकल रो फंक्शन की उप श्रेणियां होती हैं।
- संख्यात्मक फ़ंक्शन (उदा: ABS, SIN, COS)
- चरित्र कार्य (उदा: CONCAT, INITCAP)
- दिनांक समय समारोह (उदा: LAST_DAY, NEXT_DAY)
- रूपांतरण कार्य (उदा: TO_CHAR, TO_DATE)
- संग्रह समारोह (उदा: कार्डिनैलिटी, सेट)
- एग्रीगेट फंक्शन (पंक्तियों के समूह के आधार पर एकल पंक्ति लौटाता है। उदा: AVG, SUM, MAX)
- विश्लेषणात्मक कार्य
- वस्तु संदर्भ कार्य
- मॉडल फ़ंक्शन
- उपयोगकर्ता परिभाषित कार्य
फ़ंक्शन और संग्रहित प्रक्रिया में क्या अंतर है?
• सभी फ़ंक्शन को रिटर्न स्टेटमेंट का उपयोग करके एक मान वापस करना होगा। संग्रहीत कार्यविधियाँ RETURN कथन का उपयोग करके मान वापस नहीं करती हैं। एक प्रक्रिया के अंदर रिटर्न स्टेटमेंट कॉलिंग प्रोग्राम पर अपना नियंत्रण वापस कर देगा। संग्रहीत प्रक्रियाओं से मान वापस करने के लिए OUT पैरामीटर का उपयोग किया जा सकता है।
• प्रश्नों के अंदर कार्यों को बुलाया जा सकता है, लेकिन संग्रहीत प्रक्रियाओं का उपयोग प्रश्नों के अंदर नहीं किया जा सकता है।
• फ़ंक्शन बनाने के लिए रिटर्न डेटा प्रकार को शामिल किया जाना चाहिए, लेकिन संग्रहीत प्रक्रिया डीडीएल में, ऐसा नहीं है।