انتقل إلى محتوى الدرس

Creating User Defined Functions إنشاء الدوال بـ CREATE FUNCTION

تعلّم الدوال المخزنة والتنفيذ الحتمي DETERMINISTIC في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة

شرح صفوف ومحتوى الفقرة

الصف 1 شرح توضيحي

الدالة المخزنة (Stored Function) في محرك MySQL 8.4 هي وحدة برمجية مخصصة تُنشأ بالأمر CREATE FUNCTION لتغليف معادلة حسابية أو تحويل نصي أو فحص منطقي وإرجاع قيمة مفردة واحدة فقط (Scalar Value) إلى الاستعلام الذي استدعاها. على خلاف الإجراء المخزن الذي يُستدعى بأمر CALL مستقل وقد يُرجع عدة جداول نتائج، تعمل الدالة المخزنة تماماً مثل الدوال المدمجة في المحرك (مثل ROUND(x, 2) أو UPPER(str)) بحيث يمكن دمجها داخل تعبيرات SELECT وWHERE وORDER BY.

يشترط تعريف الدالة المخزنة ثلاثة عناصر إلزامية: أولاً، جميع معاملاتها تكون معاملات إدخال فقط (بدون كتابة كلمة IN أو OUT)؛ ثانياً، تحديد نوع البيانات المُرجع في رأس التعريف عبر الكلمة المفتاحية RETURNS type (بـحرف S في النهاية)؛ وثالثاً، إنهاء مسار التنفيذ داخل جسم الدالة بجملة RETURN expression; التي تعيد القيمة المحسوبة الفعلية.

الدوال المخزنة والتنفيذ الحتمي DETERMINISTIC في MySQL

مخطط معماري يوضح بنية الدوال المخزنة في MySQL 8.4 والفرق بين RETURNS وRETURN وخصائص التنفيذ الحتمي DETERMINISTIC واستدعاء الدالة داخل SELECT.
الدوال المخزنة والتنفيذ الحتمي DETERMINISTIC في MySQL
الدوال المخزنة والتنفيذ الحتمي DETERMINISTIC في MySQL
SQL
DELIMITER $$
CREATE FUNCTION fn_price_with_vat(p_amount DECIMAL(10,2))
RETURNS DECIMAL(10,2)
DETERMINISTIC
NO SQL
BEGIN
    RETURN ROUND(p_amount * 1.15, 2);
END$$
DELIMITER ;

SELECT fn_price_with_vat(200.00) AS gross_price;