الانتقال إلى المحتوى
View in the app

A better way to browse. Learn more.

مجموعة مستخدمي أوراكل العربية

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

ما هو الفرق بين Trigger On-error & On-message

Featured Replies

بتاريخ:

السلام عليكم و رحمة الله و بركاته
كنت عاوز شرح لتريجرات
On-error
on-message
و استخدامهم و علي انهي مستوي في الفورم
و اتمني حد يقولي
ما هو و استخدام كل من error-message & error-code
error-type
و هل يمكن اعمل ليهم insert في قاعدة البيانات

تم تعديل بواسطة ahmedmohamedali

بتاريخ:

السلام عليكم اخي الكريم
الفرق بين on-message وon-trigger هو
on-message : يفير هذا التريجير لاظهار الرسائل التى تكون بمثابة notify لك ولا يحدث من خلالها وقف لتفيذ الكود او حدوث اكسبشن form_trigger_failure
بمعني اكثر توضيحا حضرتك لو عملت فورمة بسيطة جدا من جدول واحد خالي من البيانات ودوست على Execute query 
تشاهد رسالة FRM-40350:  Query caused no records to be retrieved. ويكمل الكود بتاعم مفيش مشاكل بدون raise FORM_TRIGGER_FAILURE
والمثال التالي يوضح ما أقصد

go_block('employees');
do_key('execute_query');
message('Query_done');
message('Query_done');

هنا لو كان جدول ال employees فارغ تظهر رسالة الnotify بالاسفل ويكمل الكود طبيعي ويظهر رسالة " Query_done"

on-error ;يفير هذا التريجر لاظهار تبيهات الأخطاء التي يحدث فيها raise from_trigger_failure ولا يحدث استمرار لتفيذ الكود
مثال 

declare
	x char(1);
begin
	select 'Test' into x
	from dual;
end;
message('done');message('done');

هنا تم حجز متغير X حجمه حرف واحد فقط
عند وضع كلمة حجمها كبير مثل Test فيه يفير تريجر on-error واكسبشن raise form_trigger_failure
والرسالة done لا تظهر

 

و استخدامهم و علي انهي مستوي في الفورم

ومن الممكن استخدامهم على مستوى كل بلوك او مستوى الفورم

ما هو و استخدام كل من error-message & error-code
error-type

فى تريجر on-error يتم عمل تعديل عمل التريجر بدلا من اظهار رقم الخطأ و الرسالة فقط لاى كود آخر انت تريده
فبامكانك تغيير نص الرسالة الافتراضية من اوراكل 
 

if error_code='40735'then
message ('Error Occurred , Call Technical Support');
elsif error_code='40508' then
message('Unable to insert record');
message('Unable to insert record');
else 
message(error_type||'-' error_code||'-'||error_text);
بتاريخ:

مع التحفظ علي

on-error ;يفير هذا التريجر لاظهار تبيهات الأخطاء التي يحدث فيها raise from_trigger_failure ولا يحدث استمرار لتفيذ الكود

 

الـ on-error تريجر بيستخدم عشان يستبدل خطأ (ايرور) او اكتر من خطأ او اي خطأ باوامر تانية انت بتكتبها , واي تريجر بيبدأ بـ on بيستخدم لاستبدال الاكشن الاصلية , يعني on-error , كل الي هيعمله انه بدل ما يظهر ايرور هيعمل حاجة تانية ,

on-delete , بدل ما يمسح هيعمل حاجة تانية .

اكسبشن يعني "ايرور" , الاكسبشن اسمه "form_trigger_failure" ,

Raise ده امر اظهار الاكسبشن .

الاخطاء الي بتظهر مش بتتسبب في اظهار "form_trigger_failure" , لان ده ايرور وده ايرور تاني خالص

بتاريخ:
  • كاتب الموضوع

شكرا يا جماعة بجد جدا شرح اكتر من وافي للجادين و جاري التجربة

جعله الله في ميزان حسناتكم

بتاريخ:
  • كاتب الموضوع

شكرا يا جماعة بجد جدا شرح اكتر من وافي للجادين و جاري التجربة

جعله الله في ميزان حسناتكم

بتاريخ:
  • كاتب الموضوع

بس في سؤال تاني يعني ممكن لو في تريجر on-error
اعمل insert للخطا باستخدام جمل
Error-code -- error-type
في جدول و اعمل لهم رسائل معالجة لكل خطا علشان المستخدم يفهم
و كذلك مع on-delete & on-update

بتاريخ:

جميل ملاحظتك باشمهندس اسلام
كنت اقصد توضيح الفرق بين الerror , message عموما كما وضحت ان الmessage مجرد notify اما الايرور فهو خطأ يترتب عليه عدم استمرار تنفيذ الكود كما فى المثال الموضح سابقا

بالطبع باشمهندس Ahmed Mohamed Ali
تستطيع عمل مثل الdictionary الخاص بك بارقام الاخطاء
ويجيب من الداتا بيز الجمل المرادفه اللى انت مسجلها

بتاريخ:
  • كاتب الموضوع

شكرا يا بش مهندس محمد علي شرحك الوافي و تم التجربة تمام و كمان جربتها مع alert
شكرا يا بش مهندس إسلام علي الاضافات المفيدة و المعلومات القيمة

بتاريخ:

انا مش عارف انت عايز تعمل انسرت  للايرورز ليه لما يطلعوا ,

ما تعمل جدول وحط فيه ارقام الايرورز والرسايل الي عايزها , وفي الـ on-error

declare

 n number ;

M_NAME VARCHAR2(90) ;

BEGIN

n:= error_code ;

select message_NAME INTO M_NAMEFROM YOUR_TABLE WHERE ERROR_NUM = N ;

MESSAGE(M_NAME) ;

MESSAGE(M_NAME) ;

END ;

بتاريخ:
  • كاتب الموضوع

جامدة جدا الفكرة دي يا بش مهندس اسلام انت بسط فكرتي و حلوة بحيث كل خطا نكون جهزنا له الحل بتاعه او الرسالة الي عاوزينها له

انضم إلى المناقشة

يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.

زائر
أضف رد على هذا الموضوع...

برجاء الإنتباه

بإستخدامك للموقع فأنت تتعهد بالموافقة على هذه البنود: سياسة الخصوصية

Account

Navigation

البحث

إعداد إشعارات المتصفح الفورية

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.