mido_develper بتاريخ: 4 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 4 مارس 2009 السلام عليكم ورحمة الله وبركاته==================اولا جزاكم الله خيرا علي هذا المنتدي وجعله الله في ميزان حسناتكممن فضلكم عندي مشكلة في فهم المثال التالي CREATE OR REPLACE PROCEDURE pf_07_06 IS CURSOR employees_cursor (p_deptno NUMBER, p_job VARCHAR2)IS SELECT employee_id, last_name FROM employees WHERE department_id = p_deptno AND job_id = p_job; employees_record employees_cursor%ROWTYPE; BEGIN OPEN employees_cursor(80,'SA_REP'); LOOP FETCH employees_cursor INTO employees_record; DBMS_OUTPUT.PUT_LINE (TO_CHAR (employees_record.employee_id) ||' ' || employees_record.last_name); EXIT WHEN employees_cursor%NOTFOUND; END LOOP; CLOSE employees_cursor; OPEN employees_cursor(60, 'IT_PROG'); LOOP FETCH employees_cursor INTO employees_record; DBMS_OUTPUT.PUT_LINE (TO_CHAR (employees_record.employee_id) ||' ' || employees_record.last_name); EXIT WHEN employees_cursor%NOTFOUND ; END LOOP; CLOSE employees_cursor; END pf_07_06; / كنت عاوز اعرف ما فائدة استخدام FOR UPDATE OF salary NOWAIT; وجزاكم الله كل خير===============================================================الهم استخدمنا ولا تستبدلنا وقنا عذاب النار اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TROYMAN بتاريخ: 4 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 4 مارس 2009 (معدل) السلام عليكم..بالنسبة للعبارة for update :جميعنا نعلم أن تنفيذ عمليات الـDML يعتبر كبداية لعملية المناقلة (transaction) فعند تنفيذها مباشرةً يتم قفل لكافة السجلات التي تم التأثير عليها من قبل المستخدم الحالي بحيث لا يستطيع أحد من المستخدمين الأخرين تنفيذ أي عملية DML عليها قبل عمل Commit أو Rollback من قبل المستخدم الحالي .. و فقط يمكنهم عمل استعلام و طبعاً يشاهدون المعلومات القديمة..تفيد هذه التعليمة بقفل السجلات التي تم التأثير عليها حتى في تعليمة السيليكت يعني تمنعهم حتى من مشاهدة السجلات التي في قيد عملية المناقلة ...و تنفذ عادة قبل عملية الـ Update بهدف التعديل على المعلومات الفعلية التي قمنا بمشاهدتها بالاستعلام .. أما عبارة NOWAIT فهي كالتالي : إذا أردنا استخدام تعليمة select for update و كان الجدول مقفول مسبقاً فإنه ينتظر حتى ينتهي القفل من أجل عمل قفل جديد لأنه لا يمكن قفل نفس الجدول من قبل أكثر من مستخدم..و بهذا الانتظار لا استطيع متابعة عملي ... لذلك يفيد هذا الخيار بعدم الانتظار و يكتفي بإظهار رسالة تفيد بأن السجلات التي طلبت قفلها هي مقفولة مسبقاً من قبل مستخدم آخر...أي استفسار أنا جاهز... تم تعديل 4 مارس 2009 بواسطة TROYMAN اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
mido_develper بتاريخ: 6 مارس 2009 كاتب الموضوع تقديم بلاغ مشاركة بتاريخ: 6 مارس 2009 جزاك الله كل خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
سعد الروبى بتاريخ: 12 مارس 2009 تقديم بلاغ مشاركة بتاريخ: 12 مارس 2009 بارك الله فيك وزادك من علمه اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.