प्रक्रियाओं और कार्यों के बीच सबसे महत्वपूर्ण अंतर यह है कि उन्हें अलग-अलग और अलग-अलग उद्देश्यों के लिए लागू किया जाता है। इसके अलावा प्रक्रिया और कार्यों के बीच अंतर निम्नलिखित हैं -
-
एक प्रक्रिया एक मूल्य वापस नहीं करती है। इसके बजाय, एक तालिका को संशोधित करने या पुनर्प्राप्त रिकॉर्ड को संसाधित करने जैसे ऑपरेशन करने के लिए इसे कॉल स्टेटमेंट के साथ बुलाया जाता है।
दूसरी ओर, एक फ़ंक्शन को एक अभिव्यक्ति के भीतर बुलाया जाता है और एक एकल मान सीधे कॉलर को अभिव्यक्ति में उपयोग करने के लिए देता है। अर्थात्, एक फ़ंक्शन का उपयोग अभिव्यक्तियों में उसी तरह किया जाता है जैसे एक स्थिरांक, एक अंतर्निहित फ़ंक्शन, या किसी तालिका स्तंभ का संदर्भ।
-
हम कॉल स्टेटमेंट के साथ किसी फंक्शन को इनवाइट नहीं कर सकते हैं। हम एक व्यंजक में एक प्रक्रिया का आह्वान नहीं कर सकते हैं।
-
नियमित निर्माण के लिए वाक्य रचना कुछ हद तक प्रक्रियाओं और कार्यों से अलग है -
CREATE
[DEFINER = { user | CURRENT_USER }]
PROCEDURE sp_name ([proc_parameter[,...]])
[characteristic ...] routine_body
CREATE
[DEFINER = { user | CURRENT_USER }]
FUNCTION sp_name ([func_parameter[,...]])
RETURNS type
[characteristic ...] routine_body
proc_parameter:
[ IN | OUT | INOUT ] param_name type
func_parameter:
param_name type
type:
Any valid MySQL data type
characteristic:
COMMENT 'string'
| LANGUAGE SQL
| [NOT] DETERMINISTIC
| { CONTAINS SQL | NO SQL | READS SQL DATA | MODIFIES SQL DATA }
| SQL SECURITY { DEFINER | INVOKER }
routine_body:
Valid SQL routine statement -
प्रक्रिया मापदंडों को केवल-इनपुट, केवल-आउटपुट, या इनपुट और आउटपुट दोनों के लिए परिभाषित किया जा सकता है। इसका मतलब यह है कि एक प्रक्रिया आउटपुट पैरामीटर का उपयोग करके कॉलर को मान वापस भेज सकती है। इन मानों को उन बयानों में एक्सेस किया जा सकता है जो कॉल स्टेटमेंट का पालन करते हैं।
दूसरी ओर, फ़ंक्शंस में केवल इनपुट पैरामीटर होते हैं। नतीजतन, हालांकि दोनों प्रक्रियाओं और कार्यों में पैरामीटर हो सकते हैं, प्रक्रिया पैरामीटर घोषणा वाक्यविन्यास कार्यों के लिए इससे अलग है।
-
फ़ंक्शन एक मान लौटाते हैं, इसलिए फ़ंक्शन परिभाषा में रिटर्न मान के डेटा प्रकार को इंगित करने के लिए एक रिटर्न क्लॉज होना चाहिए। साथ ही, कॉलर को मान वापस करने के लिए फ़ंक्शन बॉडी के भीतर कम से कम एक रिटर्न स्टेटमेंट होना चाहिए।
दूसरी ओर, रिटर्न और रिटर्न प्रक्रिया परिभाषाओं में प्रकट नहीं होते हैं।