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

سؤال عن حلقتين متداخلتين جاوبوني :(


Rallush

Recommended Posts

مرحبا ممكن سؤال عاجل لوسمحتو :

عندي حلقتين متداخلتين الأولى عبارة عن cursor يجلب قيم الثانية عبارة عن استعلام select يرجع قيم متعلقة بالقيم التي يتم جلبها من الحلقة السابقة
تحوي هذه الحلقة الثانية عداد, و في حال تم جلب قيمة null من هذا الستعلام أود المتابعة بالقيمة التالية , و لكن الذي حصل هو أنه يتم الخروج من الحلقة بدون المتابعة


loop
fetch cursor into a,b
i:=0;
loop
if (i<3) then
select * from table
where col1=a
and col2=b;
end if;
i:=i+1;
;end loop
end loop;
exception when no_data_found then messag(1 :D



هل يتوجب علي كتابة كود ما في قسم ال exception لجعله يكمل الحلقة و عدم الخروج منها
و شكرا سلف

تم تعديل بواسطة Rallush
رابط هذا التعليق
شارك

اخى الكريم انا مش فهام بذبت كلامك لكن اللى فهمتو انك عندك 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 ويكمل لوب عادى من غير ما يخرج منها . ارجو ان يكون فهمى لسولك صحيح .
و بالتوفيق لجميع.

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

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

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

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

×   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.

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

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

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