بتاريخ: 20 أبريل 200520 سنة comment_33660 عندما اسوي compile على trigger when-timer-expiredيعطينى خطاscott.msg_pkg is invalid تقديم بلاغ
بتاريخ: 21 يوليو 200520 سنة comment_42101 الأخ خالد : بارك الله فيك وشكراً على هذه المعلومة الجميلة والمفيدة حسام مانع تقديم بلاغ
بتاريخ: 25 يوليو 200520 سنة comment_42625 والله انها لشغلة رائعة وانت أروع وشكرا جزيلا على هاي المعلومات القيمة تقديم بلاغ
بتاريخ: 8 أغسطس 200520 سنة comment_44109 بارك الله فيك يا اخي درس رائع ننتظر منك الجديد والمفيد تقديم بلاغ
بتاريخ: 30 سبتمبر 200520 سنة comment_48577 يعطيك العافية و جزاك الله الخير و ارجوا لك المزيد تقديم بلاغ
بتاريخ: 11 أكتوبر 200520 سنة comment_49251 مشكور جدا على الموضوع الجديد والشرح الوافى وياريت تستمر فى شرح ال packages القليلة الاستخدام والغير شائعة الانتشار لتعم الاستفادة على الجميعشكرا تقديم بلاغ
بتاريخ: 11 أكتوبر 200520 سنة comment_49257 الف شكر لك اخي خالد على هذاء التميز والتعاون جزاك الله خير تقديم بلاغ
بتاريخ: 16 نوفمبر 200520 سنة comment_51814 ظهرت هذه الرسالهErrors for PACKAGE BODY MSG_PKG:PLS-00201: identifier 'DBMS_ALERT' must be declaredPL/SQL: Statement ignoredبالرغم من اننى عملت Grant EXECUTE_CATALOG_ROLE to scott تقديم بلاغ
بتاريخ: 31 ديسمبر 200520 سنة comment_56176 ياجماعة انا برضو ما اشتغلت لي نرجو من الشباب مساعدتنا تقديم بلاغ
بتاريخ: 2 يناير 200620 سنة comment_56408 أبشر يا أخ / خالد بالنجاح والتوفيق ( بإذن الله )لأنك تعطي المعلومة بأمانة وصدق وحب لك الدعاء مني في ظهر الغيب تقديم بلاغ
بتاريخ: 4 يناير 200620 سنة comment_56575 لكن اخي خالد ارسلت لك الى الايميل الخطا الذي يحدث ارجو الرد بسرعة تقديم بلاغ
بتاريخ: 16 يناير 200620 سنة comment_57613 السلام عليكميا اخ خالد مساك الله بالخير وكل عام وانت بخيرجزاك الله على هذا الموضوعلكن لو انا عندي برنامج جاهز على الاوراكل وعندي كل الصلاحيات بس ما عندي السورس نفسهفهل يمكن ارسل رساله عن طريق الاوراكل لليوزر وهل يمكن اغلاق البرنامج كله عن طريق ارسال رساله لهم بالغلق وجزاك الله خير تقديم بلاغ
بتاريخ: 12 مارس 200619 سنة comment_62725 والله انك امين يا اخيلأنك تعطينا هذه المعلومات القيمهحيث ان نقل العلم امانه وشكرا جزيلا لك تقديم بلاغ
بتاريخ: 28 ديسمبر 200619 سنة comment_88148 مشكور يا اخ/ خالدلكن ارجو المساعده فى فتح ملفات pdfوجزاك الله خيراً تقديم بلاغ
بتاريخ: 7 مايو 200718 سنة comment_99165 السلام عليكم ورحمة الله وبركاتة اعزاء احب ان اقدم لكم فكرة ارسال رسائل بين الـ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; تقديم بلاغ
بتاريخ: 7 مايو 200718 سنة comment_99166 جزاك الله كل خير على هذا الموضوع الجميل. لكن ظهرت لى مشكلة :بعد ان تم تكوين الـpackage بنجاح و اثناء انشاء الـTrigger المسمىwhen-new-form-instance ظهرت رسالة ORA-00600:, internal error code, .... وتختفى عند ازالةdbms_alert.register تقديم بلاغ
بتاريخ: 28 فبراير 200818 سنة comment_123529 هل يمكن إستخدام هذا الكود الرائع مع oracle application(ERPوهل يمكن أستخدامها بدون عمل formsوشكرا تقديم بلاغ
بتاريخ: 16 مارس 200817 سنة comment_124730 اخي العزيز اشكرك على هذه المشاركة الرائعة بس عند تطبيقي تظهر مشكلة في الدفلوبر 6i في ال tregger when_timer_expierdتظهر الرسالة التالية identifier 'MSG_PJG.MSG' must by declaredمع العلم اني عملت هذا البكج في قاعدة البيانات وحسب المذكور في المشاركة اخي العزيز ارجو منك المساعدة لاني بحاجة ماسة لهذا الموضوع مع الشكر الجزيل تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.