دوره های آموزشی آکادمی پی وی لرن (پروژه محور و ویژه بازار کار)



  • ۱۰
  • فروردین

جلسه ۱۶ : استثنائات در PL / SQL

  • دسته‌بندی‌ها :
جلسه ۱۶ : استثنائات در PL / SQL
    • جزئیات
    • نوع محتواآموزشی

      مقدمه

      با عرض سلام و خسته نباشید خدمت کاربران محترم سایت آموزشی پی وی لرن. و کاربرانی که آموزش کامل  PL/SQL را دنبال می کنند. در این پست آموزشی، ما درباره Exceptions در PL / SQL ( استثناء در PL / SQL ) صحبت خواهیم کرد. یک استثنا یک وضعیت خطا در طی اجرای برنامه است. PL / SQL از برنامه نویسان برای گرفتن چنین شرایطی با استفاده از بلوک EXCEPTION در برنامه پشتیبانی می کند و اقدام مناسب در برابر شرایط خطا انجام می شود. دو نوع استثنا در PL / SQL وجود دارد:

      • استثنائات تعریف شده توسط سیستم
      • استثنائات تعریف شده توسط کاربر

      نحو ه پردازش استثنایی

      نحوه کلی اداره استثناء به شرح زیر است:

      در اینجا شما می توانید لیست استثناءهای زیادی را که می توانید مرتکب شوید را فهرست کنید.

      استثناء پیش فرض با استفاده از WHEN THEM پردازش می شود.

      مثال : 

      مثال

      اجازه دهید یک کد برای نشان دادن مفهوم بنویسیم.

      ما از جدول مشتریان که در جلسه های قبلی ایجاد کرده ایم استفاده می کنیم.

      مثال : 

      هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.

      مثال : 

      برنامه فوق نشان دهنده نام و آدرس مشتری است که شناسه داده شده است.

      از آنجا که هیچ مشتری با ID شماره ۸ در پایگاه داده ما وجود ندارد، این برنامه باعث افزایش استثناء زمان اجرا NO_DATA_FOUND می شود که در بلوک EXCEPTION گرفته شده است.

      افزایش استثنائات

      استثنائات توسط سرور پایگاه داده به صورت خودکار هر وقت خطایی در پایگاه داده داخلی ایجاد می شود، اما با استفاده از دستور RAISE می توان استثنا را به صراحت توسط برنامه نویس مطرح کرد.

      در زیر نحوه ی ساده برای ایجاد استثنا نشان داده شده است.

      مثال : 

      شما می توانید از سینتکس بالا در بالا بردن  استاندارد استثنا استاندارد اوراکل یا Exceptions در PL / SQL تعریف شده توسط کاربر استفاده کنید.

      در بخش بعدی، به شما نمونه ای در مورد افزایش استثناء تعریف شده توسط کاربر داده می شود.

      شما می توانید استثنائات استاندارد اوراکل را به روش مشابهی افزایش دهید.

      استثنائات تعریف شده توسط کاربر

      PL / SQL به شما اجازه می دهد Exceptions در PL / SQL خود را با توجه به نیاز برنامه خود تعریف کند.

      یک استثناء تعریف شده توسط کاربر باید اعلام شود و سپس صریح با استفاده از عبارت RAISE یا روش DBMS_STANDARD.RAISE_APPLICATION_ERROR مطرح شود.

      نحوه اعلام استثناء

      مثال : 

      مثال

      مثال زیر این مفهوم را نشان می دهد. که برنامه برای شناسایی مشتری درخواست می کند،

      هنگامی که کاربر وارد یک شناسه نامعتبر است، invalid_id استثنا مطرح شده است.

      مثال : 

      هنگامی که کد بالا در SQL فوری اجرا می شود، نتیجه زیر را تولید می کند.

      مثال : 

      استثنائات از پیش تعریف شده

      PL / SQL بسیاری از Exceptions در PL / SQL از پیش تعیین شده را فراهم می کند و زمانی اجرا می شوند

      که هر یک از دستورات پایگاه داده توسط یک برنامه نقض شده باشد.

      به عنوان مثال، استثناء در PL / SQL از پیش تعیین شده NO_DATA_FOUND هنگامی که یک دستور SELECT INTO هیچ ردیفی باز نمی شود، مطرح می شود.

      جدول

      جدول زیر لیستی از چند استثناء مهم از پیش تعیین شده را فهرست می کند.
      نام استثنا
      خطای اوراکل
      کد  SQL
      شرح
      ACCESS_INTO_NULL
      ۰۶۵۳۰-۶۵۳۰هنگامی که یک شیء صفر به صورت خودکار مقدار تعیین می شود، مطرح می شود.
      CASE_NOT_FOUND
      ۰۶۵۹۲-۶۵۹۲این زمانی مطرح می شود که هیچ کدام از گزینه های WHEN clause یک CASE انتخاب نمی شود و هیچ بند ELSE وجود ندارد.
      COLLECTION_IS_NULL
      ۰۶۵۳۱-۶۵۳۱هنگامی که یک برنامه تلاش می کند روش های جمع آوری شده به غیر از EXISTS را به یک جدول توپی غیر توقیف نشده یا varray اعمال کند، یا برنامه تلاش می کند تا مقادیر را به عناصر یک جدول غیر توقیف شده یا متغیر اختصاص دهد، مطرح می شود.
      DUP_VAL_ON_INDEX
      ۰۰۰۰۱هنگامی که مقادیر تکراری در یک ستون با شاخص منحصر به فرد ذخیره می شوند، افزایش می یابد.
      INVALID_CURSOR
      ۰۱۰۰۱-۱۰۰۱هنگامی که تلاش برای ایجاد یک عملگر مکان نما که مجاز نیست، مانند بستن یک مکان نما باز نشده، مطرح می شود.
      INVALID_NUMBER
      ۰۱۷۲۲-۱۷۲۲هنگامی که تبدیل یک رشته کاراکتر به یک عدد رخ می دهد، افزایش می یابد زیرا رشته یک عدد معتبر را نشان نمی دهد.
      LOGIN_DENIED
      ۰۱۰۱۷-۱۰۱۷هنگامی که یک برنامه تلاش می کند تا با استفاده از نام کاربری یا رمز عبور نامعتبر به پایگاه داده وارد شود، مطرح می شود.
      NO_DATA_FOUND
      ۰۱۴۰۳+۱۰۰هنگامی که یک دستور SELECT INTO هیچ ردیفی باز نمی شود، مطرح می شود.
      NOT_LOGGED_ON
      ۰۱۰۱۲-۱۰۱۲هنگامی که یک تماس پایگاه داده بدون اتصال به پایگاه داده صادر می شود، مطرح می شود.
      PROGRAM_ERROR
      ۰۶۵۰۱-۶۵۰۱هنگامی که PL / SQL دارای یک مشکل داخلی است مطرح می شود.
      ROWTYPE_MISMATCH
      ۰۶۵۰۴-۶۵۰۴هنگامی که یک مکان نما مقدار ارزش را در یک متغیر دارای نوع داده ناسازگار به دست می آورد بالا می رود.
      SELF_IS_NULL
      ۳۰۶۲۵-۳۰۶۲۵وقتی یک متد عضو فراخوانی می شود، آن مطرح می شود، اما نمونه نوع شیء مقداردهی نشده است.
      STORAGE_ERROR
      ۰۶۵۰۰-۶۵۰۰هنگامی که PL / SQL از حافظه خارج شد یا حافظه خراب شد، مطرح می شود.
      TOO_MANY_ROWS
      ۰۱۴۲۲-۱۴۲۲هنگامی که یک دستور SELECT INTO بیشتر از یک ردیف باز می شود، افزایش می یابد.
      VALUE_ERROR
      ۰۶۵۰۲-۶۵۰۲زمانی که یک خطای حساب، تبدیل، قطع، یا محدودیت زمانی رخ می دهد، مطرح می شود.
      ZERO_DIVIDE
      ۰۱۴۷۶۱۴۷۶هنگامی که یک تلاش برای تقسیم یک عدد صفر انجام می شود، افزایش می یابد.

      کلام آخر

      این جلسه بحث ما در مورد Exceptions در PL / SQL ( استثناء در PL / SQL ) بود.

      که توضیح مختصری در مورد پردازش استثناء در PL / SQL ، استثنائات تعریف شده توسط کاربر و استثناء در PL / SQL از پیش تعریف شده نیز داده شد.

      امیدواریم راضی بوذه باشید.

      QR:  جلسه ۱۶ : استثنائات در PL / SQL
      به اشتراک بگذارید