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

  • تسجيل الدخول عبر الفيس بوك تسجيل الدخول عبر تويتر Log In with LinkedIn Log In with Google      تسجيل دخول    
  • إنشاء حساب

صورة
- - - - -

Cursor يرجع سجل واحد فقط لماذا؟


5 رد (ردود) على هذا الموضوع

#1 omar_oracle

omar_oracle

    عضو

  • الأعضــاء
  • 2 مشاركة

تاريخ المشاركة 09 September 2010 - 08:48 AM

الأخوة الكرام السلام عليكم ورحمة الله وبركاته

لدي cursor لا يقوم بأرجاع كل البيانات المتعلقة بطالب معين ... انما يرجع قيمة واحدة

هذا هو:
declare
	
	cursor curs is select TEST_STUD_CRSE_REG.stud_id,TEST_STUD_CRSE_DETAIL.crse_no,
 TEST_COURSES.CRSE_TYPE,TEST_STUD_CRSE_DETAIL.CRSE_TYPE_DESC,
	TEST_STUD_CRSE_DETAIL.term from TEST_STUD_CRSE_REG,TEST_STUD_CRSE_DETAIL,TEST_COURSES
	where (TEST_STUD_CRSE_REG.stud_id =:TEST_STUD_CRSE_REG.stud_id)
	and (TEST_STUD_CRSE_DETAIL.stud_id =:TEST_STUD_CRSE_REG.stud_id)
	and (TEST_STUD_CRSE_DETAIL.term = TEST_STUD_CRSE_REG.TERM )
	and (TEST_COURSES.CRSE_NO = TEST_STUD_CRSE_DETAIL.CRSE_NO)
 and (TEST_STUD_CRSE_DETAIL.CRSE_TYPE = TEST_COURSES.CRSE_TYPE);
	

	studid number(8);
	crseno number(6);
	--crsename varchar2(20);
	crsetype number(1);
	crsetypedesc varchar2(15);
	term number(5);
--	crsetime varchar2(10);
	
	
begin
	open curs;
	loop
		
		fetch curs into studid,crseno,crsetype,crsetypedesc,term;
			exit when curs%notfound;
		:TEST_STUD_CRSE_DETAIL.STUD_ID :=studid;
		:TEST_STUD_CRSE_DETAIL.crse_no :=crseno;
		--:TEST_STUD_CRSE_DETAIL.crse_name :=crsename;
 :TEST_STUD_CRSE_DETAIL.crse_type :=crsetype;
 :TEST_STUD_CRSE_DETAIL.crse_type_desc :=crsetypedesc;
 :TEST_STUD_CRSE_DETAIL.term :=term;
 --:TEST_STUD_CRSE_DETAIL.crse_time :=crsetime;
		
	
		
		
	end loop;
end;

لا اعرف ما المشكلة والله حيرني ... انا استعمل ماستر ديتيل بلوك

اتمنى منك المساعدة لو سمحتم

السلام عليكم

ملفات مرفقة



#2 ammarcontrol

ammarcontrol

    عضو نشط

  • الأعضــاء
  • 237 مشاركة

تاريخ المشاركة 09 September 2010 - 02:20 PM

هل تاكدت من الجداول تحتوي بيانات؟؟

#3 ammarcontrol

ammarcontrol

    عضو نشط

  • الأعضــاء
  • 237 مشاركة

تاريخ المشاركة 09 September 2010 - 02:22 PM

ارسلي الفورم و ملف ال DMP و ان شاء الله احلها لك

#4 Amgad

Amgad

    مشرف عام ومشرف قسم تحليل النظم

  • الفريق الإداري
  • 4,558 مشاركة
  • الاسم الأول:امجد
  • اسم العائلة:حلمي
  • البـلـد: Country Flag
  • المنصب الحالي:Business Systems Analyst at al Fanar Co. Riyadh KSA

تاريخ المشاركة 09 September 2010 - 03:17 PM

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

اضف امر
NEXT_RECORD;
قبل انهاء ال loop ...
end loop;

لا إله إلا الله الحليم الكريم
لا اله إلا الله العلى العظيم
لا اله إلا الله رب السماوات السبع و رب العرش العظيم
‏اللهم ارزقني قبل الموت توبة وعند الموت شهادة وبعد الموت جنة
اللهم ارزقني حسن الخاتمة
اللهم هون علينا سكرات الموت ... ونور علينا قبورنا
اللهم ارزقني الموت وأنا ساجد لك يا ارحم الراحمين
اللهم ثبتني عند سؤال الملكين
اللهم اجعل قبري روضة من رياض الجنة ولا تجعله حفرة من حفر النار
اللهم اني اعوذ بك من فتن الدنيا
اللهم ارحم ابائنا وامهاتنا واغفر لهما وتجاوز عن سيئاتهما وادخلهم فسيح جناتك ... والحقنا بهما يا رب العالمين
اللهم ارحم موتانا وموتى المسلمين واشفي مرضانا ومرضى المسلمين
اللهم اغفر للمسلمين والمسلمات والمؤمنين والمؤمنات الأحياء منهم والأموات
وبارك اللهم على سيدنا محمد صلى الله عليه وسلم
اللهم آمين ... اللهم آمين ... اللهم آمين


....


#5 ammarcontrol

ammarcontrol

    عضو نشط

  • الأعضــاء
  • 237 مشاركة

تاريخ المشاركة 09 September 2010 - 05:48 PM

كلامك مضبوط اخي امجد و انا اسف لم انتبه بانه لم يضع عباره next_record

#6 tekamoka

tekamoka

    مشترك

  • الأعضــاء
  • 123 مشاركة

تاريخ المشاركة 13 September 2010 - 01:08 PM

الاخ العزيز يستحسن ان تستخدم for حيث انها تقو م بفتح ال cursor و عمل لوب داخلة و تغلقة حين تصل الى اخر ريكورد.
لان الكود الذى قمت بكتابته ناقص close_cursor لان لو مكتبتش الجملة دى الكيرسور هيفضل مفتوح فى الميمورى و هيدى bad performance


و فى الحالة بتاعتك يستحسن انك تبنى البلوك على الجملة كاملة (block in join) و تقوم بعمل سيت للوير كل مرة بتعمل رن.