بتاريخ: 16 يوليو 201015 سنة comment_196761 مرحبا ممكن سؤال عاجل لوسمحتو :عندي حلقتين متداخلتين الأولى عبارة عن cursor يجلب قيم الثانية عبارة عن استعلام select يرجع قيم متعلقة بالقيم التي يتم جلبها من الحلقة السابقةتحوي هذه الحلقة الثانية عداد, و في حال تم جلب قيمة null من هذا الستعلام أود المتابعة بالقيمة التالية , و لكن الذي حصل هو أنه يتم الخروج من الحلقة بدون المتابعة loopfetch cursor into a,bi:=0;loopif (i<3) thenselect * from table where col1=aand col2=b;end if;i:=i+1;;end loopend loop;exception when no_data_found then messag(1 هل يتوجب علي كتابة كود ما في قسم ال exception لجعله يكمل الحلقة و عدم الخروج منها و شكرا سلف تم تعديل 16 يوليو 201015 سنة بواسطة Rallush تقديم بلاغ
بتاريخ: 16 يوليو 201015 سنة comment_196769 اخى الكريم انا مش فهام بذبت كلامك لكن اللى فهمتو انك عندك 2 loop عايز لما جمله السيكلت االلى فى لو ب الداخلى متلاقيش قيمه يكمل لوب مش يخرج والاجراء يخلص لو هوده قصدك يبقى لازم تعمل exception داخال لوب الداخلى مش زاى مانت عامل فى لوب الخارجى . المتال القادم هيكون على hr اول لوب هيكاب القسم و التاى يسرد الموظفين فكرتك ان لو قسم مش موجد فيها موظفين يكمل على القسم التالى مش يقوف ده اللى انا فهمتو الكود اهو لعلا اكون فهمت سولك صح SET SERVEROUTPUT ON DECLARE v_dep varchar2(50); emp_name varchar2(50); begin for i in (select DISTINCT department_name, department_id from departments) loop DBMS_OUTPUT.PUT_LINE(i.department_name); for k in 1..3 loop begin select last_name into emp_name from employees where department_id=i.department_id and rownum=k ; DBMS_OUTPUT.PUT_LINE(emp_name); EXCEPTION when too_many_rows then NULL; when no_data_found then DBMS_OUTPUT.PUT_LINE('end'||' '||i.department_name ); END ; end loop; end loop ; end ; طبعا انا محدد عرض بس 3 موظفين اتوضيح هتلاحظ عند تنفيذ المثال وجود اقسام فيها لايوجد فيه موظفين او يوجد فيها اقل من 3 موظفين فى هذه الحاله سوف يطبع end ويكمل لوب عادى من غير ما يخرج منها . ارجو ان يكون فهمى لسولك صحيح .و بالتوفيق لجميع. تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.