Procedural Control Flow IF WHILEالشروط والحلقات بالإجراء المخزن
تعلّم الإجراءات المخزنة والمعاملات وبنى التحكم في MySQL بأسلوب MySQL 8 الحديث مع أمثلة استعلامات SQL وتطبيقات تفاعلية.
1 صفوف تعليمية
MySQL
7 مشاهدة
شرح صفوف ومحتوى الفقرة
الصف 1
شرح توضيحي
تتيح الإجراءات المخزنة في MySQL 8.4 كتابة منطق تحكم إجرائي متكامل لا يتوفر في استعلامات SQL المفردة. يمكنك توجيه مسار التنفيذ بين عدة كتل أوامر باستخدام جملة IF ... THEN ... ELSEIF ... ELSE ... END IF; (لاحظ أنها جملة تحكم مستقلة وليست دالة IF(cond, a, b) المضمنة داخل الاستعلامات)، أو عبر جملة CASE الإجرائية.
ولتنفيذ العمليات التكرارية مثل توليد دفعات الأقساط أو معالجة الفترات الزمنية المتسلسلة، يوفر المحرك حلقة WHILE condition DO ... END WHILE; التي تفحص الشرط قبل كل دورة، بالإضافة إلى REPEAT ... UNTIL condition END REPEAT; مع إمكانية الخروج المبكر من الحلقة المسماة بأمر LEAVE أو تخطي الدورة الحالية بأمر ITERATE.
</>SQL
DELIMITER $$
CREATE PROCEDURE sp_loyalty_tier(
IN p_points INT, OUT p_tier VARCHAR(20), OUT p_coupons INT
)
BEGIN
DECLARE v_step INT DEFAULT 0;
IF p_points >= 800 THEN SET p_tier = 'Platinum';
ELSEIF p_points >= 400 THEN SET p_tier = 'Gold';
ELSE SET p_tier = 'Silver'; END IF;
WHILE v_step < p_points DO SET v_step = v_step + 250; END WHILE;
SET p_coupons = FLOOR(p_points / 250);
END$$
</>SQL
-- Inspect and safely drop stored procedures
SHOW PROCEDURE STATUS LIKE 'sp_%';
SHOW CREATE PROCEDURE sp_loyalty_tier;
DROP PROCEDURE IF EXISTS sp_archive_summary;
جميع فقرات هذا الدرس (الإجراءات المخزنة والمعاملات وبنى التحكم في MySQL)