لا يوجد تحذير للبيانات في الإجراءات المخزنة: "خطأ 1329: صفر صفوف تم جلبها أو تحديدها أو معالجتها"
في برمجة قاعدة البيانات، الإجراءات المخزنة غالبًا ما تستخدم لتغليف العمليات المعقدة وضمان سلامة البيانات. ومع ذلك، في بعض الأحيان قد تواجه هذه الإجراءات أخطاء أو تنتج تحذيرات غير متوقعة. إحدى المشكلات الشائعة هي رسالة "الخطأ 1329: لا توجد بيانات - تم جلب صفر صفوف أو تحديدها أو معالجتها".
يظهر هذا التحذير عادةً عندما لا يتعامل الإجراء المخزن بشكل صريح مع الحالة التي لا يتم فيها إرجاع أي بيانات. لحل هذه المشكلة، يجب على الشخص التعامل مع حالة "لم يتم العثور عليه" بشكل صحيح. في MySQL، يمكن تحقيق ذلك باستخدام عبارة CONTINUE HANDLER.
خذ بعين الاعتبار الإجراء التالي test_proc المخزن:
CREATE PROCEDURE `testing_proc`()
READS SQL DATA
BEGIN
DECLARE done INT DEFAULT 0;
DECLARE l_name VARCHAR(20);
DECLARE my_cur CURSOR FOR
SELECT name FROM customer_tbl;
OPEN my_cur;
my_cur_loop:
LOOP FETCH my_cur INTO l_name;
IF done = 1 THEN
LEAVE my_cur_loop;
END IF;
INSERT INTO names_tbl VALUES(l_name);
END LOOP my_cur_loop;
CLOSE my_cur;
END
إذا تم تشغيل هذا الإجراء بدون أي بيانات في جدول customer_tbl، فسيؤدي إلى تشغيل التحذير "خطأ 1329". لمنع ذلك، يمكننا إضافة عبارة CONTINUE HANDLER التالية إلى نهاية الإجراء:
DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
هذه العبارة تخبر MySQL بـ اضبط المتغير المنجز على 1 إذا لم يتم العثور على صفوف. سيؤدي هذا إلى خروج حلقة المؤشر، مما يمنع حدوث الخطأ.بدلاً من ذلك، يمكن للمرء أيضًا تجاوز التحذير عن طريق إضافة عبارة "وهمية" في نهاية الإجراء الذي يتضمن جدولًا ويكون ناجحًا، مثل:
SELECT name INTO l_name FROM customer_tbl LIMIT 1;
سيضمن هذا البيان جلب الصف، ومسح التحذير. من خلال التعامل بشكل صحيح في حالة "لم يتم العثور عليه" أو إضافة عبارة وهمية، يمكن إزالة تحذير "الخطأ 1329" في الإجراءات المخزنة التي لا تُرجع أية بيانات.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3