بتاريخ: 17 يونيو 200718 سنة comment_102571 السلام عليكم ورحمة الله وبركاتهاخواني الكرامبالنسبة لترتيب الرقم المتسلسل او اضافة رقم مسلسل محذوف فيجب عمل التاليان استخدام السيكوانس الخاص بالاوراكل يجب ان لايتم حذف السجل ولذلك انا شخصيا انا لا افضل هذه العملية للسجلات التي يتم او يسمح بحذفهاويوجد طريقة افضلوهي عمل جدول به ارقام اذا كان لايهمك ان هذا السجل قديم او حديث والطريقة كالتالياضف هذا البروسيجر ب program unit بالشاشة PROCEDURE Get_Seq_no(Seq_no in out number) IS Declare cursor c is select count(id_number) CC from ur_table; n number; nn number; n_count number:=0; begin open c; fetch c into n; close c; for i in 1 .. n loop n_count:=i; select id_number into nn from ur_table where id_number=i; if nn is null then exit loop; end if; end loop; --هذا الشرط اذا كانت التسلسل متطابق وغير ناقص فإنه يضيف واحد لآخر رقم if n_count=n and nn is not null then seq_no:=nvl(n,0)+1; else seq_no:=n_count; end if; end; هذا الكود حتى لو حذفت الرقم المتسلسل يقوم باعطائك الرقم المسلسل المحذوف ثم قم باضافة تريجر على مستوى البلوك اسمه pre-insert واستدعي البروسيجربالشكل التاليget_seq_no(:id_number);حيث ان :id_number هو عبارة رقم المسلسل بالشاشةاما اذا كان لايهمك رقم المسلسل فيمكن تطبيق هذا البروسيجر PROCEDURE Get_Seq_no(Seq_no in out number) IS Declare cursor c is select count(id_number) CC from ur_table; n number; begin open c; fetch c into n; close c; for i in 1 .. n loop update ur_table set id_number =i where id_number>=i; commit; end loop; seq_no:=nvl(n,0)+1; end if; end; ثم قم باضافة تريجر على مستوى البلوك اسمه pre-insert واستدعي البروسيجربالشكل التاليget_seq_no(:id_number);حيث ان :id_number هو عبارة رقم المسلسل بالشاشةشرح طريقة عمل الطريقتينبالنسبة للطريقة الاولى فهو يقوم بالبحث عن الرقم المفروض حيث لو فرضنا وجود 5 سجلاتورقمها المسلسل بالشكل التالي 1 2 4 5 6 هنا سوف يرجع لك ان رقم 3 هو رقم المسلسلبالنسبة للطريقة الثانيةفهو يقوم بالتحديث السجلات يعني لو فرضنا وجود 5 سجلات ان رقم التسلسل بالشكل التالي 2 3 4 5 7فإنه اذا كان رقم i في ال loop يساوي 1 فان التحديث سوف يكون1 1 1 1 1 اذا كان رقم i في ال loop يساوي 2 فان التحديث سوف يكون1 2 2 2 2 اذا كان رقم i في ال loop يساوي3 فان التحديث سوف يكون1 2 3 3 3 اذا كان رقم i في ال loop يساوي 4 فان التحديث سوف يكون1 2 3 4 4 اذا كان رقم i في ال loop يساوي 5 فان التحديث سوف يكون1 2 3 4 5 هنا سوف يرجع لك ان رقم 6 هو رقم المسلسلطبعا توجد طرق اخرى وارجو ان تكون طريقة الشرح واضحهوهذا ملف مرفق به الكود لمن يحتاجه _______________________________.doc تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.