Calling Stored Functions in SELECTاستدعاء الدالة داخل SELECT
تعلّم الدوال المخزنة والتنفيذ الحتمي DETERMINISTIC في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة
شرح صفوف ومحتوى الفقرة
الصف 1
شرح توضيحي
الميزة العملية الكبرى للدالة المخزنة هي إمكانية استدعائها مباشرةً داخل أي تعبير SQL قياسي دون الحاجة للأمر CALL. يمكنك وضع اسم الدالة وتمرير أعمدة الجدول إليها داخل قائمة أعمدة SELECT لحساب عمود مشتق لكل صف، أو داخل شرط WHERE لتصفية الصفوف بناءً على نتيجة الدالة، أو حتى داخل جملة ORDER BY لترتيب النتائج.
مع ذلك، انتبه للأثر الأدائي عند استدعاء دالة مخزنة داخل شرط WHERE على عمود مفهرس (مثل WHERE fn_net_tax(amount) > 500): سيضطر محرك InnoDB لتشغيل الدالة على كل صف في الجدول (Full Table Scan) متجاهلاً الفهرس، لذلك يُفضَّل دائماً وضع الدالة في قائمة SELECT بعد تصفية الصفوف بشرط مباشر على العمود الأصلي.
</>SQL
-- Use stored functions directly inside SELECT and WHERE
SELECT
order_id,
amount AS net_amount,
fn_price_with_vat(amount) AS gross_amount,
fn_shipping_band(weight_kg) AS shipping_type
FROM orders
WHERE status = 'paid' AND amount >= 100.00
ORDER BY gross_amount DESC;
جميع فقرات هذا الدرس (الدوال المخزنة والتنفيذ الحتمي DETERMINISTIC في MySQL)