شرح صفوف ومحتوى الفقرة
إلى جانب دوال التحضير في لغات البرمجة، يوفر خادم MySQL 8 أوامر SQL مباشرة للتحضير والتنفيذ وإخلاء الذاكرة، وتُستخدم بكثرة في الجلسات التفاعلية وداخل الإجراءات المخزنة الديناميكية:
PREPARE stmt_name FROM 'SELECT ... WHERE category = ? AND unit_price <= ?';: يترجم نص الاستعلام ويحفظه في ذاكرة الجلسة باسمstmt_name.SET @cat = 'Storage', @max_p = 200.00;: يجهز القيم المراد تمريرها داخل متغيرات الجلسة المسبوقة بعلامة@.EXECUTE stmt_name USING @cat, @max_p;: ينفذ الاستعلام المحضر ويربط المتغيرات بالترتيب مكان علامات الاستفهام (?).DEALLOCATE PREPARE stmt_name;(أو المرادفDROP PREPARE stmt_name;): يحرر الذاكرة المحجوزة للاستعلام المحضر في الخادم فور انتهاء الحاجة إليه، مما يمنع استنزاف الحد الأقصىmax_prepared_stmt_count.
+----+-------------------+-----------+------------+
| id | product_name | category | unit_price |
+----+-------------------+-----------+------------+
| 15 | NVMe SSD 2TB | Storage | 149.00 |
+----+-------------------+-----------+------------+
SQL
PREPARE filter_products FROM
'SELECT id, product_name, category, unit_price
FROM products
WHERE category = ? AND unit_price <= ?
ORDER BY unit_price ASC';
SET @cat_name = 'Storage';
SET @max_price = 200.00;
EXECUTE filter_products USING @cat_name, @max_price;
DEALLOCATE PREPARE filter_products;