بتاريخ: 15 مايو 200619 سنة comment_69274 متى استخدم ال pragmaوما الفرق بينها وبين raise_application_errorمع مثال تقديم بلاغ
بتاريخ: 15 مايو 200619 سنة comment_69288 السلام عليكم pragma exception_init تستخدم لوضع نص لoracle exception و التي لها رقم و لكن ليس لها نص فهناك ثلاثة انواع من الexceptions 1-predifined exception like ora-01403 no data found2- nonpredifined exception like ORA-2292 و هو الخاص ب integrity constraintschild record found 3-user defined exception و هي اكسبشنز خاصة بالبروجرامر و ليست أخطاء في اداتا بيز اي ممكن ان تنتج عن أخطاء ف ي البيزنس مثلا pragma exception_initو ال تستخدم لوضع إسم للنوع الثاني من الexceptionsحتي تسطيع التعامل معه في قسم exception in ur block اي تستطيع الاشارة إليه مثل when no_data_found then do actions here ; اما raise application_error فهي مجرد بروسيدر تستخدم في الtriggers and stored procedures لعمل رسالة و إظهارها لليوزر في الابلكيشنبالضبط مثل message built in في الفورم و لا تستعمل لاي exception هي فقط لعمل رسالة و تظهر عندما يحدث خطا معين في الانسرت مثلا و يقوم اليوزر ب عمل display errorو هذه مثال جاهز لل pragma exception_init PROCEDURE delete_company (company_id_in IN NUMBER) IS /* Declare the exception. */ still_have_employees EXCEPTION; /* Associate the exception name with an error number. */ PRAGMA EXCEPTION_INIT (still_have_employees, -2292); BEGIN /* Try to delete the company. */ DELETE FROM company WHERE company_id = company_id_in; EXCEPTION /* If child records were found, this exception is raised! */ WHEN still_have_employees THEN DBMS_OUTPUT.PUT_LINE (' Please delete employees for company first.'); END; WHEN still_have_employees THEN DBMS_OUTPUT.PUT_LINE (' Please delete employees for company first.'); END; و يمكنك في الجزء السابق استعمال raise_application_errorحتي يظهر الخطا علي الابلكيشن هكذا WHEN still_have_employees THEN RAISE_APPLICATION_ERROR (-20121,'Please delete employees for company first.'); END; أتمني ان تكون استفدت بالتوفيق تقديم بلاغ
بتاريخ: 15 مايو 200619 سنة كاتب الموضوع comment_69301 اجابة سريعة واستفادة كبيرة وشكر وفير تقديم بلاغ
انضم إلى المناقشة
يمكنك المشاركة الآن والتسجيل لاحقاً. إذا كان لديك حساب, سجل دخولك الآن لتقوم بالمشاركة من خلال حسابك.