Presentation is loading. Please wait.

Presentation is loading. Please wait.

تابع جمل التحكم و معالجة الاستثناءات

Similar presentations


Presentation on theme: "تابع جمل التحكم و معالجة الاستثناءات"— Presentation transcript:

1 تابع جمل التحكم و معالجة الاستثناءات
المحاضرة التاسعة T.Eman Alsqour

2 الأدخال في لغة pl/sql “Enter Number“ACCEPT V_NUM PROMPT
قبل الجزء التعريفي في البرنامج. حيث أن : ACCEPT  كلمه محجوزة V_NUM  اسم المتغير المراد ادخال قيمته PROMPT  كلمه محجوزه “Enter Number” الرسالة المراد اظهارها للمستخدم T.Eman Alsqour

3 - اذا كان الرقم اقل من صفر تطبع Negative Number
اكتبي وحدة برمجية تقرأ عدد وتطبع رسالة مناسبة حسب الاتي: - اذا كان الرقم اقل من صفر تطبع Negative Number غير ذلك تطبع Positive Number SET SERVEROUTPUT ON ACCEPT V_NUM PROMPT 'Enter The Number:' DECLARE v_num number(3); BEGIN v_num:=&v_num; if (v_num <0 ) then DBMS_output.put_line (‘Negative Number’); else DBMS_output.put_line(‘Positive Number '); END; T.Eman Alsqour

4 الاستثناءات ماهي الاستثناءات؟
الاستثناءات عبارة عن الأخطاء التي ممكن أن تظهر خلال عملية تنفيذ وحدة البرنامج (Block) وفي حال ظهورها تؤدي إلى وقف عملية التنفيذ. T.Eman Alsqour

5 الاستثناءات تنقسم الاستثناءات إلى 3 أقسام:
1- الأخطاء المعرفة مسبقا (Predefined Oracle Server errors) 2- الأخطاء الغير معرفة مسبقا (Non-Predefined Oracle server errors) 3- استثناءات معرفة بواسطة المستخدم (User Defined Exceptions) تتم معالجة الاستثناءات في الجزء الخاص بالاستثناءات في وحدة الـ(Block) T.Eman Alsqour

6 هنا تتم معالجة الاستثناءات والإمساك بها
DECLARE .... BEGIN …. EXCEPTION WHEN exception1 [OR exception ] THEN statement1; statement2; [WHEN exception3 [OR exception ] THEN . . .] [WHEN OTHERS THEN هنا تتم معالجة الاستثناءات والإمساك بها T.Eman Alsqour

7 معالجة الاستثناءات 1- الأخطاء المعرفة مسبقا (Predefined Oracle Server errors): هي عبارة عن 20 خطأ لكل منها اسم ,ويتم الإمساك بها في جزء الاستثناءات داخل وحدة (Block) وذلك لمعالجتها عن طريق كتابة إجراء معين يتم عمله عند ظهور الخطأ. الجدول التالي يبين بعض منها: الاستثناء الوصف ZERO_DEVIDE القسمة على صفر VALUE_ERROR خطأ في عملية حسابية أو تحويل أو خطأ في الحجم TOO_MANY_ROWS جملة الاسترجاع (Select)أعادت أكثر من صف NO_DATA_FOUND جملة الاسترجاع (Select) لم تعد أي نتيجة NOT_LOGGED_ON محاولة إجراء عملية على قاعدة البيانات دون دخول. T.Eman Alsqour

8 معالجة الاستثناءات (الأخطاء المعرفة مسبقا)
معالجة الاستثناءات (الأخطاء المعرفة مسبقا) تتبعي البرنامج التالي و اكتبي ناتج الطباعة : SET SERVEROUTPUT ON DECLARE             v_num1 NUMBER := 4;             v_num2 NUMBER := 0;     BEGIN             v_num1 := v_num1 / v_num2;             v_num2 := 9;            dbms_output.put_line(' Value of Num2 ' || v_num2);     EXCEPTION       WHEN  ZERO_DIVIDE THEN        dbms_output.put_line('Trying to divide by zero');       dbms_output.put_line(' Value of v_num1 ' || v_num1);       dbms_output.put_line(' Value of v_num2 ' || v_num2);    END;    / T.Eman Alsqour

9 معالجة الاستثناءات 2- الأخطاء الغير معرفة مسبقا:
عبارة عن أي خطأ من أخطاء أوركال غير تلك المعرفة مسبقا وتظهر ضمنيا ولكن يجب تعريفها في الجزء التعريفي (Declarative section). للتعامل مع هذا النوع من الاستثناءات: 1- نقوم بتعريف الاستثناء في الجزء التعريفي للـ(Block): DECLARE ….. Exception_name EXCEPTION; 2- ربط الاستثناء مع الخطأ في الجزء التعريفي بعد تعريف الاستثناء باستخدام (PRAGMA_EXCEPTION_INIT): PRAGMA_EXCEPTION_INIT(Exception_name ,error_number); 3- معالجة الاستثناء في جزء الاستثناءات في وحدة ال(Block): يتم ذلك عن طريق كتابة : WHEN Exception_name THEN هذا النوع من الاستثناءات غالبا يعالج بواسطة WHEN OTHERS لكن إذا لم تتم معالجته بهذه الطريقة فإننا نحتاج إلى معالجته كما في الأعلى (عن طريق تعريفه وربطه مع الخطأ ثم معالجته). T.Eman Alsqour

10 معالجة الاستثناءات (الأخطاء الغير معرفة مسبقا)
معالجة الاستثناءات (الأخطاء الغير معرفة مسبقا) T.Eman Alsqour

11 معالجة الاستثناءات (الأخطاء الغير معرفة مسبقا)
معالجة الاستثناءات (الأخطاء الغير معرفة مسبقا) DECLARE -مثال: e_emps_remaining EXCEPTION; تعريف الاستثناء PRAGMA EXCEPTION_INIT ( e_emps_remaining , -2292); ربط الاستثناء مع الخطأ رقم v_deptno dept.deptno%TYPE := &p_deptno; BEGIN DELETE FROM dept WHERE deptno = v_deptno; COMMIT; EXCEPTION WHEN e_emps_remaining THEN DBMS_OUTPUT.PUT_LINE ('Cannot remove dept ‘معالجة الاستثناء ||TO_CHAR(v_deptno) || '. Employees exist. '); END; T.Eman Alsqour

12 معالجة الاستثناءات 3- الاستثناءات المعرفة من قبل المستخدم:
هي عبارة عن أي حدث يعتبره المستخدم خطأ يوجب وقف تنفيذ ال(Block),وعلى المستخدم تعريفه في جزء التعريفات وإظهاره باستخدام (RAISE). للتعامل مع هذا النوع من الاستثناءات: 1- نقوم بتعريف الاستثناء في الجزء التعريفي لل(Block): DECLARE ….. Exception_name EXCEPTION; 2- إظهار الاستثناء في الجزء التنفيذي من ال(Block) نتيجة أي حدث يعتبره المستخدم خطأ عن طريق استخدام (RAISE) Begin …. RAISE Exception_name ; 3- معالجة الاستثناء في جزء الاستثناءات في وحدة ال(Block): يتم ذلك عن طريق كتابة : WHEN Exception_name THEN كتابة الجمل الناسبة للمعالجة T.Eman Alsqour

13 معالجة الاستثناءات (الاستثناءات المعرفة من قبل المستخدم)
معالجة الاستثناءات (الاستثناءات المعرفة من قبل المستخدم) في الجزء التنفيذي باستخدام الأمر RAISE في الجزء التعريفي في جزء الاستثناءات T.Eman Alsqour

14 استثناء معرف من قبل المستخدم
معالجة الاستثناءات استخدام SQLCODE وSQLERRM : هي عبارة عن دوال يمكن استخدامها في معالجة الاستثناءات. SQLCODE : دالة تعيد رقم الخطأ الذي حدث. SQLERRM : دالة تعيد رسالة وصف للخطأ الذي حدث. SQLCODE الوصف لم يظهر أي استثناء 1 استثناء معرف من قبل المستخدم 100+ NO_DATA_FOUND رقم سالب ORECALE أي خطأ من أخطاء T.Eman Alsqour

15 معالجة الاستثناءات ماذا يحدث إذا لم يتم معالجة الاستثناء؟
ظهور الاستثناء يؤدي إلى توقف الوحدة البرمجية وإذا لم تتم معالجته فإنه سينتقل إلى المكان الذي تمت منه عملية استدعاء الوحدة ,وإذا لم تتم المعالجة سينتقل للبيئة التي استدعته وهكذا ... حتى يصل أول مكان تمت منه عملية التنفيذ. T.Eman Alsqour

16 الخلاصة ماهي الاستثناءات أنواع الاستثناءات الثلاثة
كيفية معالجة كل نوع من الاستثناءات T.Eman Alsqour


Download ppt "تابع جمل التحكم و معالجة الاستثناءات"

Similar presentations


Ads by Google