الانتقال إلى المحتوى

مشكله Exception Part لايعمل


sasa87

Recommended Posts

انا عندي مشكله في الكود البسيط ده ان جزء 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 مكن حدد يفهمني اه الي حصل بالظبط

رابط هذا التعليق
شارك

السلام عليكم ورحمة الله

هناك فرق بين امر ال 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.

رابط هذا التعليق
شارك

بص حضرتك الكود سليم ومفهوش حاجة بس لما حضرتك تستخدم ال 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;
رابط هذا التعليق
شارك

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   تمت استعادة المحتوى السابق الخاص بك.   مسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

جاري التحميل
×
×
  • أضف...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية