بتاريخ: 24 مايو 200520 سنة comment_37204 السلام عليكميحدث كثيرا لدينا وجود فراغات (GAPS) في تسلسل السجلات لجدول معين وذلك نتيجة إما أخطاء يدوية أثناء الإدخال أو شطب هذه السجلات وهذا يؤدي إلى وجود أرقام كبيرة إذا استخدمنا في إضافة سجلات جديدة التسلسل (أكبر رقم موجود + 1) ولذلك يجب إضافة سجلات تعتمد على استخدام أصغر رقم فارغ ولكن الصعوبة هو كيف يتم إيجاد هذه الأرقام :الطريقة الأولى : select count(EMP_NO) into count_no from EMPLOYEES; if count_no = 0 then l_id := 1; else select max(EMP_NO) into max_no from EMPLOYEES; if count_no = max_no then l_id := max_no + 1; else for row in (select EMP_NO from EMPLOYEES order by EMP_NO) loop if l_id is null then l_id :=row.EMP_NO ; else l_id := l_id + 1; end if; exit when l_id !=row.EMP_NO ; end loop; end if; end if;Message('tHE MINIMUM EMPTY NUMBER IS ='||l_id); هذه الطرقة معقدة قليلا ولكن يمكن الاستفادة منها لفهم بعض الأوامر المهمة وفيما يلي طريقة أسهل .الطريقة الثانية :declare cursor c is select EMP_NO from EMPLOYEES order by EMP_NO; v number(2); i number(2):=0;begin open c; loop fetch c into v; i:=i+1; exit when i<>v or c%notfound; end loop;Message('tHE MINIMUM EMPTY NUMBER IS ='||I);end;أرجو أن يستفيد الجميع من ذلكودمتم ذخرا لهذه الأمة تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.