2010-04-21 4 views
61

MySQL डेटाबेस संदर्भ में, इन 3 नियमों में क्या अंतर है:अंतर?

  • संग्रहीत प्रक्रिया;
  • संग्रहीत दिनचर्या;
  • संग्रहित फ़ंक्शन।

पीएस बिल्ड-इन फ़ंक्शंस जैसे डेट डेट फ़ंक्शंस, weekday() को क्या माना जाता है?

+2

संबंधित उत्तर: [MySQL संग्रहीत प्रक्रिया बनाम फ़ंक्शन] (http://stackoverflow.com/questions/3744209/mysql-stored-procedure-vs-function-which-would-i-use-when/13510102#13510102) , जब मैं अपना जवाब सुधार रहा था, तो मुझे लिंक मिला, इसलिए लिंक किया गया :) –

उत्तर

68

Google आपका मित्र है। http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

एक त्वरित सारांश: के लिए "mysql दिनचर्या समारोह प्रक्रिया" पहला मैच यह है

एक संग्रहीत दिनचर्या या तो एक प्रक्रिया या एक समारोह है।

कॉल कथन का उपयोग करके एक प्रक्रिया लागू की जाती है और आउटपुट चर का उपयोग करके केवल मान वापस पास कर सकती है।

किसी अन्य फ़ंक्शन की तरह किसी कथन के अंदर से एक फ़ंक्शन को कॉल किया जा सकता है और स्केलर मान वापस कर सकता है।

MySQL समारोह और mysql प्रक्रिया

MYSQL समारोह के बीच

+13

जबकि मैं आरटीएफएम भावना से सहमत हूं। इन उत्तरों का उपयोग अब इनलाइन परिणाम दिखाने के लिए Google द्वारा किया जाता है। – Realistic

27

अंतर

यह मान लौटाना चाहिए। IN, OUT और INOUT फ़ंक्शन में उपयोग नहीं किया जा सकता है। लेकिन फ़ंक्शन बनाने के दौरान वापसी डेटाटाइप घोषित किया जाना चाहिए। फ़ंक्शन को SQL कथन से बुलाया जा सकता है। फ़ंक्शन एक मान लौटाता है।

MYSQL प्रक्रिया

वापसी मान अनिवार्य नहीं है, लेकिन हो सकता है प्रक्रिया रिटर्न के लिए बाहर पैरामीटर का उपयोग करता। IN का उपयोग कर सकते हैं OUT | INOUT पैरामीटर। प्रक्रिया को SQL कथन से नहीं कहा जा सकता है। OUT या INOUT पैरामीटर का उपयोग कर प्रक्रिया मानों को वापस लौटाएं।

29

यहां मैंने कार्य और प्रक्रियाओं के बीच अंतर को सारांशित करने का प्रयास किया है।

  1. एक समारोह हमेशा वापसी कथन का उपयोग कर एक मान देता है। प्रक्रिया पैरामीटर के माध्यम से एक या अधिक मान वापस कर सकती है या किसी भी तरह वापस नहीं आ सकती है।
  2. फ़ंक्शंस आमतौर पर गणना के लिए उपयोग किए जाते हैं जहां प्रक्रियाओं का सामान्य रूप से व्यावसायिक तर्क निष्पादित करने के लिए उपयोग किया जाता है।
  3. एक फ़ंक्शन केवल 1 मान देता है। प्रक्रिया कई मान (अधिकतम 1024) वापस कर सकते हैं।
  4. संग्रहीत प्रक्रिया हमेशा डिफ़ॉल्ट रूप से शून्य का एक पूर्णांक मान देता है। जबकि फ़ंक्शन रिटर्न प्रकार स्केलर या टेबल या टेबल मान हो सकते हैं।
  5. संग्रहीत प्रक्रियाओं में एक प्रीकंपिल्ड निष्पादन योजना है, जहां कार्य नहीं हैं।
  6. एक फ़ंक्शन को SQL कथन द्वारा सीधे कहा जा सकता है जैसे कि func_name को दोहरी से चुनते हैं जबकि प्रक्रियाएं नहीं कर सकती हैं।
  7. संग्रहीत प्रक्रिया में सुरक्षा है और नेटवर्क यातायात को कम करता है और हम किसी भी संख्या में संग्रहित प्रक्रिया को कॉल कर सकते हैं। एक समय में अनुप्रयोगों का।
  8. SQL क्वेरीज़ में एक फ़ंक्शन का उपयोग किया जा सकता है जबकि SQL क्वेरी में कोई प्रक्रिया का उपयोग नहीं किया जा सकता है। यह एक बड़ा अंतर बी/डब्ल्यू फ़ंक्शन और प्रक्रियाओं का कारण बनता है।
+0

आपका चौथा बिंदु सही नहीं है कृपया उत्तर को सही करें –

0

फ़ंक्शन को एक मान वापस करना होगा, लेकिन संग्रहीत प्रक्रिया में यह वैकल्पिक है (प्रक्रिया शून्य या n मान वापस कर सकती है)। फ़ंक्शंस के लिए केवल इनपुट पैरामीटर हो सकते हैं जबकि प्रक्रियाओं में इनपुट/आउटपुट पैरामीटर हो सकते हैं। कार्य प्रक्रिया से कार्य कहा जा सकता है जबकि प्रक्रियाओं को कार्य से नहीं कहा जा सकता है।