khaled بتاريخ: 3 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2004 السلام عليكم ورحمة الله وبركاتة اعزاء احب ان اقدم لكم فكرة ارسال رسائل بين الـSessions وكيفية الاستفادة منها في التحكم في النظام من خلال الـDatabaseفائدة الرسائل بين الـsessionsافرض ان لديك Database Application مكون من عدد كبير من المستخدمين , وافرض ان لديك مشكلة ما في الداتابيس او انك تريد اغلاق قاعدة البيانات لسبب من الاسباب . وانك قبل ان تغلق قاعدة البيانات تريد ان اشعار جميع المستخدمين بانك سوف تعمل اغلاق لقاعدة البيانات بعد فترة محدده من الزمن .هنا تحتاج ان ترسل رسالة لجميع المستخدمين لاشعارهم بذلك . موضوعنا هو كيف تعمل على ارسال رسالة من قاعدة البيانات لجميع المستخدمين , وهذه الطريقه لها فوائد كثير ومثال على ذلك ما ذكر سابقاًالخطوات لكي نعمل على ارسال رسالة الى session معين يجب ان نستخدم الـPackage المسمى Dbms_alert ولكن هذا الـpackage هو تابع للمستخدم sys وحتى يتم استخدامة مع المستخدم scott والذي سوف نستخدمة لعمل مثال , يجب اعطا صلاحية للمستخدم scott لاستخدام الـpackage المسمى dbms_alert ويكون كالاتي 1- ادخل على المستخدم sys , كلمة السر هي change_on_install ان لم تكن قد عدلت2-نفذ الامر Grant EXECUTE_CATALOG_ROLE to scott 3- ادخل على المستخدم scott كلمة السر هي tiger ان لم تكن قد عدلت4- كون الـ Package التالي create or replace package msg_pkg is Function Msg(P_msg varchar2) return varchar2; end msg_pkg; create or replace package body msg_pkg is Function Msg(P_msg varchar2) return varchar2 is l_msg varchar2(2000); l_state number; Begin Dbms_alert.waitone(p_msg,l_msg,l_state,0); Return l_msg; End; end msg_pkg; هذا الـpackage سوف يستخدم لاستقبال الرسائل , حيث ان الـfunction المسمى MSG سوف ترجع الرسالة الي سوف تستقبل من بقية الـsession وهذة الرسائل سوف يتم استقبالها عن طريق Dbms_alert.waitone والذي يحوي 4 parameters p_msg هو IN parameter وهو عبارة عن اسم الرسالة l_msg هو out parameter وهو يرجع محتوى الرسالةl_state هو out parameter وهو يرجع 0 هو 1 اذا كانت القيمة 0 فان هناك رسالة حصلت الـparameter الاخير هو قيمة رقمية تحدد عدد ثواني الانتظار لرسالة معينة (اذا كانت مثلاً 10 فان البرنامج عندما يصل الى هذه السطر سوف ينتظر 10 دقائق لكي يستقبل رسالة معين )5- بعد ان يتم تكوين الـpackage بنجاح اذهب الى الـform builder ثم كون form بالموصفات التالية في الـTrigger المسمىwhen-new-form-instance قم بكتابة الاتي DECLARE timer_id Timer; BEGIN timer_id := CREATE_TIMER('emp_timer', 10000, REPEAT); dbms_alert.register('my_msg'); END; وهذا الكود يستخدم لغرضين الاول انشاء Timer يتم من خلالة تحسس الرسائل المرسلة كل 10 ثوانيالثاني تسجيل هذا الـsession لكي يكون قادراً على استقبال الرسائل والتي سوف ترسل من Session اخر عن طريق الاجرى dbms_alert.register وكذلك يتم تحدد اسم الرسالة الي سوف يكون قادر على استقبال محتواها .في الـTrigger المسمى WHEN-TIMER-EXPIRED اكتب الاتي Declare Is_msg Varchar2(2000); Begin Is_msg:=msg_pkg.msg('my_msg'); if is_msg is not null Then Message (is_msg); Message (is_msg); end if; End; وفي هذا الكود يتم استدعا الـPackage الذي تم انشاءه سابقاً لكي نتاكد من وجود اي رسالة , وكما هو ملاحظ من الكود فانه اذا كانت هناك رسالة سوف يتم اظهارها باستخدام الـmessage الان نفذ النموذج ولكن قبل ان تعمل على تنفيذه قم بإضافة اي item للفورم حتى ينفذ بشكل صحيح . ثم اتركا في حالة الـRUN اي لا تقم باغلاقه 6- لان اذهب الى الـsqlplus وادخل باستخدام اي مستخدم وليكن scott7- الان نفذ الامر الاتي exec dbms_Alert.signal('my_msg','You must close all forms now'); وهذ الامر يستخدم لوضع رسالة في الرسالة المسماة my_msg8- الان اعمل commit حتى يتم ارسال الرسالة 9- اذهب الى النموذج والذي قمت بتنفيذه مسبقاً وسف تلاحظ ظهور الرسالة ملاحظة افرض انك تريد ان تغلق النموذج عن طريق ارسال رسالة من الـsqlplus , لعمل ذلك عدل الكود الى الاتي Declare Is_msg Varchar2(2000); Begin Is_msg:=msg_pkg.msg('my_msg'); if is_msg is not null Then If Is_msg ='EXIT' Then Exit_form(no_commit); else Message (is_msg); Message (is_msg); end if; end if; End; الان اذهب الى الـsqlplus ثم ارسل الاتي exec dbms_Alert.signal('my_msg','EXIT'); ثم COMMIT; 1 اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
الأسيف بتاريخ: 3 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2004 دائماً مميز ..وفقك الله لما يحبه ويرضاه .. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
arab20002000 بتاريخ: 3 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2004 مشكور و جزاك الله الف خير اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
TAREK ALHAMAD بتاريخ: 3 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2004 الله عليك يا أخ خالد والله أكثر بكثير من رائع مميز مميز مميز يا أخ خالد كل يوم تتحفنا بموضوع رائع والاهم من المواضيع الرائعة هو الشرح الوافىلكل نقطة فى الموضوع باسلوب سهل وبسيطبارك الله فيك وعليك أخ خالدمشكور جدا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Essam بتاريخ: 3 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2004 شكرا جزيلا لك........ اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
هتان بتاريخ: 3 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 3 أبريل 2004 كعادتك تسكت دهرا وتنطق ذهبا ، اوكما قال الشاعر ههه ، تحياتي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
KhalidOCP بتاريخ: 4 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 4 أبريل 2004 مجهود رائع جدا اخ خالد والى الامام ,,, اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ANAS-ORA بتاريخ: 4 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 4 أبريل 2004 يعطيييك ألف عافيه .... اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
samirtarek بتاريخ: 4 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 4 أبريل 2004 بسم الله الرحمن الرحيمالسلام عليكم ورحمة الله وبركاتهوالحمد لله رب العالمين والصلاة والسلام على الحبيب المصطفى مشكووووووووووووووووووووووريا اخى لك جزيل الشكر والى الامام دوماوبارك الله فيك ولك وعليك وجعله فى ميزان حسناتكطارق مرشدى--------------------------------------------------------------------------------------------------------سبحان الله العظيم - سبحان الله وبحمده عدد خلقه ورضاء نفسه وزنة عرشه ومداد كلماته ولا حول ولا قوة الابالله اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
hamdi344 بتاريخ: 19 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 19 أبريل 2004 دائماً مميز ..وفقك الله لما يحبه ويرضاه .. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
عبداللطيف بتاريخ: 19 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 19 أبريل 2004 شكراً اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Guest عادل الشهري بتاريخ: 19 أبريل 2004 تقديم بلاغ مشاركة بتاريخ: 19 أبريل 2004 يعطيك الف عافيه أخي خالد ..... إلى الأمام يامبدع : )أخوك عادل اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
tomy3k_bakr بتاريخ: 26 سبتمبر 2004 تقديم بلاغ مشاركة بتاريخ: 26 سبتمبر 2004 ياه شكراً خالد.ده موضوع جامد أوي وفتح في دماغي أفكار حلوة أويشكراً. اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
samawi بتاريخ: 29 يناير 2005 تقديم بلاغ مشاركة بتاريخ: 29 يناير 2005 جزاك الله خير وزاد الشباب من أمثالك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
amgad-oracle بتاريخ: 29 يناير 2005 تقديم بلاغ مشاركة بتاريخ: 29 يناير 2005 مشكور يا اخيامجد ياسين اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
aza بتاريخ: 7 فبراير 2005 تقديم بلاغ مشاركة بتاريخ: 7 فبراير 2005 كلام جامدبس ممكن يا أخ تامر توضح لينا الافكار إلي اتفتحت عندك اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
pro_shad بتاريخ: 7 فبراير 2005 تقديم بلاغ مشاركة بتاريخ: 7 فبراير 2005 Warning: Package Body created with compilation errors.plz help me , to run this program اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
aza بتاريخ: 9 فبراير 2005 تقديم بلاغ مشاركة بتاريخ: 9 فبراير 2005 أكرر السؤال ممكن يا أخ تامر توضح لينا الافكار إلي اتفتحت عندكوشكرا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
sattyware بتاريخ: 10 فبراير 2005 تقديم بلاغ مشاركة بتاريخ: 10 فبراير 2005 (معدل) من فرج عن مؤمن كربة فرج الله عنة كربة من كرب يوم القيامة...........مشكور تم تعديل 10 فبراير 2005 بواسطة sattyware اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
SEAL بتاريخ: 26 فبراير 2005 تقديم بلاغ مشاركة بتاريخ: 26 فبراير 2005 شكراً اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
adnan_prog بتاريخ: 17 مارس 2005 تقديم بلاغ مشاركة بتاريخ: 17 مارس 2005 شكرا شكرا وطيب الله كل اوقاتك اخوك عدنان اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
محمد السعيد بتاريخ: 23 مارس 2005 تقديم بلاغ مشاركة بتاريخ: 23 مارس 2005 مشكور اخى خالد على الشرح الوافى الجميل اشكرك كثيراوقد نفذت الخطوات التى طرحتها بحذافيرها ولكن واجهتنى مشكلة عند تنفيذ ال package body فىsql*plus للمستخدم scottوهى Dbms_alert must be declared مع اننى قد عملت grant لل execute_catalog_role من خلال المستخدم sysفما هى اذا المشكلة اخى خالد ارجو منك مشكورا الرد على سؤالى وشكرا****//////محمد السعيد ////// اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
msam بتاريخ: 19 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 19 أبريل 2005 جزالك الله خيريعطيك العافية اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Abdullah Alahmadi بتاريخ: 19 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 19 أبريل 2005 بـــــــــارك الله فيك وبامثالك. اخوك عبدالله الأحمدي اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
ابو ساره بتاريخ: 19 أبريل 2005 تقديم بلاغ مشاركة بتاريخ: 19 أبريل 2005 جزاك الله خير الجزاء درس مفيد جدا اقتباس رابط هذا التعليق شارك المزيد من خيارات المشاركة
Recommended Posts
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.