شرح صفوف ومحتوى الفقرة
يوضح الجدول المقارن التالي الفروق الهندسية الدقيقة بين الدوال المخزنة (Stored Functions) والإجراءات المخزنة (Stored Procedures) في MySQL 8.4 لاختيار الأداة الأنسب لكل سيناريو:
| وجه المقارنة | الدالة المخزنة (Stored Function) | الإجراء المخزن (Stored Procedure) |
|---|---|---|
| طريقة الاستدعاء | تُستدعى داخل تعبيرات SELECT وWHERE وSET. | يُستدعى بأمر مستقل CALL sp_name(args); فقط. |
| القيمة المُرجعة | إلزامية: تعيد قيمة مفردة واحدة عبر RETURNS وRETURN. | اختيارية: يعيد صفر أو أكثر من جداول النتائج أو معاملات OUT. |
| أنواع المعاملات | معاملات إدخال فقط (بدون كتابة IN أو OUT). | يدعم IN وOUT وINOUT بالكامل. |
إرجاع جدول SELECT | ممنوع (تُستخدم SELECT ... INTO للمتغيرات فقط). | مدعوم بالكامل لإرجاع مجموعات نتائج للتطبيق. |
التصريح بـ DETERMINISTIC | إلزامي مع السجل الثنائي (أو تحديد READS SQL DATA / NO SQL). | اختياري ولا يمنع السجل الثنائي إنشاء الإجراء. |
خلاصة المعرفة ومحطة الانتقال
ملخص الدرس
حصاد الدرسمراجعة مركّزة لأهم المفاهيم والقواعد الهندسية التي أتقنتها في هذا الدرس قبل التطبيق العملي
ماذا تعلّمت في هذا الدرس؟
تعلمت في هذا الدرس إنشاء الدوال المخزنة بـ CREATE FUNCTION، والتمييز بين RETURNS وRETURN، وضبط خصائص الحتمية DETERMINISTIC والوصول للبيانات READS SQL DATA وNO SQL، واستدعاء الدوال داخل جمل SELECT، ومقارنتها بالإجراءات المخزنة.
الخطوة التالية والدرس القادم
في الدرس القادم سنتعرف على المشغلات التلقائية (Triggers) التي تعمل تلقائياً عند تعديل الصفوف، والأحداث المجدولة (Scheduled Events) لأتمتة مهام الصيانة الدورية في الخلفية.