sasa87 بتاريخ: 1 يناير 2010 تقديم بلاغ مشاركة بتاريخ: 1 يناير 2010 انا عندي مشكله في الكود البسيط ده ان جزء exception لا يفعل عند عدم وجود بيانات ارجو المساعده في معرفة هذا الخطاء الغريب DECLARE dummy NUMBER; BEGIN SELECT count(1) INTO dummy FROM emp where deptno=200; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('no data found'); WHEN OTHERS THEN NULL; END; المفرض ان الرساله no data foun تظهر نظر لعدم وجود بيانات خاصه بالادارة 200 تمام كده المشكله انه الجزء لا يعمل اطلاق مش عارف العيب في الدتابيز عندي ولا اه ياريت حد يجربه ويقلي اشتغل عنده ولا لالالالالالالالا علشان اعرف الغلط فين بالظبطوالغريب ان الكود ده يعمل DECLARE dummy NUMBER; BEGIN SELECT sal INTO dummy FROM emp where deptno=200; EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('no data found'); END; هو اشتغل لما انا غيريت count الى sal مكن حدد يفهمني اه الي حصل بالظبط اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Amgad بتاريخ: 1 يناير 2010 تقديم بلاغ مشاركة بتاريخ: 1 يناير 2010 السلام عليكم ورحمة الله هناك فرق بين امر ال select وعدم وجود بيانات when no data found عند تنفيذ امر البحث فى الجدول ... ولم يجد بيانات خاصة بالادارة 200 فسيذهب الى تنفيذ ما بداخل ال exception ولكن تنفيذ الوظيفه count or sum فسيقوم بالبحث من الجدول ويعود بنتيجة (صفر) فى حالة عدم تحقق الشرط وهو الادارة= 200 وبالتالى لا يعتبر خطأ ولن ينفذ امر ال exception هل وضحت الفكرة مع امر الcount لن يكون هناك خطأ ... اليك الملفات مرة اخرى بعد التنفيذ SQL> DECLARE 2 dummy NUMBER; 3 BEGIN SELECT sal INTO dummy FROM emp where deptno=200; 4 EXCEPTION 5 WHEN NO_DATA_FOUND THEN 6 DBMS_OUTPUT.PUT_LINE('no data found'); 7 END; 8 / no data found PL/SQL procedure successfully completed. ================================ SQL> ed Wrote file afiedt.buf 1 DECLARE 2 dummy NUMBER; 3 BEGIN SELECT sum(sal) INTO dummy FROM emp where deptno=200; 4 DBMS_OUTPUT.PUT_LINE('total salary= ' || to_char(dummy)); 5 EXCEPTION 6 WHEN NO_DATA_FOUND THEN 7 DBMS_OUTPUT.PUT_LINE('no data found'); 8* END; SQL> / total salary= PL/SQL procedure successfully completed. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
@nana@ بتاريخ: 1 يناير 2010 تقديم بلاغ مشاركة بتاريخ: 1 يناير 2010 بص حضرتك الكود سليم ومفهوش حاجة بس لما حضرتك تستخدم ال count حضرتك عايز تعرف عدد الموظفين ال ف القسم دا ا هو 200 وهو اصلا مفهوش صح ؟ ...يعنى هيرجع 0 ودى تعتبر قيمة يعنى فرضا لو حضرتك عايز تشيك ع ال count ممكن تستخدم if اما بالنسبة ل sal فهنا بنرجع بيانات من الجدول ف حالة عدم وجود فبيظهر ارور ويبص ع ال EXCEPTION set serveroutput on DECLARE dummy NUMBER; BEGIN SELECT count(1) INTO dummy FROM emp where deptno=200; if dummy=0 then DBMS_OUTPUT.PUT_LINE('no data found'); end if; END; اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.