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

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

صورة
- - - - -

مشكله بسيطه....لكن صعبه


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

#1 bogii

bogii

    عضو

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

تاريخ المشاركة 20 March 2006 - 10:14 AM

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

انا في مشكله واريد من اهل الخبره مساعدتي
عندي SQL script يحتوي علي الاتي

1- insert into table1(select * from SCHEMA2.TABLE1)
2- insert into table2(select * from SCHEMA2.TABLE2)
3- insert into table3(select * from SCHEMA2.TABLE3)
Commit

المشكله التي تواجهني ان في بعض الاحيان يتم تنفيذ 1 و2 وتفشل 3 وهذا غير مطلوب
المطلوب: انه اذا فشل تنفيذ ايا من هذه الجمل يتم عمل rollback دون تنفيذ ايا من هذه الجمل
فهل توجد طريقه لحل هذه المشكله؟؟؟

أفيدوني أفادكم الله

#2 عبدالله ندا

عبدالله ندا

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 1,017 مشاركة
  • الاسم الأول:عبدالله
  • اسم العائلة:ندا
  • البـلـد: Country Flag
  • المنصب الحالي:Technical Applications Manager

تاريخ المشاركة 20 March 2006 - 11:25 AM

الحل الاسهل عمل commit بعد كل عباره
الحل الاصعب استخدام داله ذات جلسة عمل منفصله autonomouse transaction
مع تمنياتي بالتوفيق

في زمننا هذا .........................
ليس هناك قلب ناصع البياض ...
ولا قلب قاتم السواد ...
ولكن دائما
BLACK&WHITE

 

مع تحياتي
عبدالله ندا

http://anada.4shared.com

abdallahnada@hotmail.com 


#3 bogii

bogii

    عضو

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

تاريخ المشاركة 20 March 2006 - 02:30 PM

شكرا لتجاوبك اخي black & white
ولكن بالنسبه للحل الاول بإضافة commit بعد كل Insert
فهذا غير مطلوب لان المطلوب هو عمل commit فقط في حالة نجاح تنفيذ جميع جمل ال insert>>اما في حالة فشل ايا منهم مطلوب الخروج دون عمل اي commit :D(


ارجو ان تكون المشكله واضحه الان

#4 أسامة موسى

أسامة موسى

    مشرف سابق وعضو مميز

  • المجموعة الماسية
  • 2,381 مشاركة
  • البـلـد: Country Flag

تاريخ المشاركة 20 March 2006 - 04:24 PM

اخي الكريم
ضع التالي
فهذه الطريقة تفحص اذا نعم يقوم بالتخزين والاى يقوم بعمل rollback


insert into table1(select * from SCHEMA2.TABLE1)
 insert into table2(select * from SCHEMA2.TABLE2)
 insert into table3(select * from SCHEMA2.TABLE3)

COMMIT;

EXCEPTION
	when others then
	DECLARE
    server_err               NUMBER         := abs(DBMS_ERROR_CODE);
    server_msg               VARCHAR2(2000) := DBMS_ERROR_TEXT;
    
  BEGIN
	rollback;
	message('Error during insert: '||to_char(server_err) ||'-'||server_msg);

  END;      

۩ اللهـــــــــــــــــــــــم صلي على سيدنا محمد وعلـى آله وصحبه أجمـعين ۩
۩ سبحـــــــــــــــــان الله وبحمده ....... سبحــــــــــــــــــــــــان الله العظيم ۩



يمكنك زيارتي على صفحتي الخاصة بالفيس بوك على الرابط AskOsama

يمكنك زيارتي على مدونتي الجديدة على الرابط http://askossama.blogspot.com

#5 ابو عبد الرحمن التميمي

ابو عبد الرحمن التميمي

    عضو

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

تاريخ المشاركة 21 March 2006 - 01:00 AM

جزاك الله خيراً

#6 bogii

bogii

    عضو

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

تاريخ المشاركة 21 March 2006 - 01:11 PM

أخي Admin5

شكرا لتعاونك واهتمامك....فعلا استطعت بهذه الطريقه عمل transaction واحد لكل insert commands
جزاك الله خيرا يا اخي