آیا Raise_application_error برمی گردد؟
آیا Raise_application_error برمی گردد؟

تصویری: آیا Raise_application_error برمی گردد؟

تصویری: آیا Raise_application_error برمی گردد؟
تصویری: آموزش PL/SQL 48: با استفاده از RAISE_APPLICATION_ERROR استثناء تعریف کاربر را اعلام کنید 2024, ممکن است
Anonim

داخل یک ماشه a RAISE_APPLICATION_ERROR انجام می دهد انجام ندادن الف بازگشت به عقب ، عملیات فعلی را لغو می کند، یعنی یک UPDATE/INSERT/DELETE. آ بازگشت به عقب همه تغییرات را در تراکنش فعلی (یا تا Savepoint داده شده) برمی گرداند، که متفاوت است.

به این ترتیب، Raise_application_error چیست؟

پاسخ: raise_application_error در واقع رویه‌ای است که توسط Oracle تعریف شده است که به توسعه‌دهنده اجازه می‌دهد تا یک استثنا مطرح کند و یک شماره خطا و پیام را با رویه مرتبط کند. اوراکل فراهم می کند raise_application_error روشی که به شما امکان می دهد اعداد خطای سفارشی را در برنامه های خود افزایش دهید.

علاوه بر این، زمانی که یک دستور بازگشت در داخل یک تریگر اجرا شود چه اتفاقی خواهد افتاد؟ وقتی که ماشه آتش تراکنش فعلی هنوز کامل نشده است. همانطور که COMMIT یک تراکنش را خاتمه می دهد که به آنها اجازه می دهد در محرک ها خواهد بود شکستن واحد کار بنابراین تغییر می کند در یک ماشه اجرا شد توسط تراکنش مالکی که DML را صادر کرده است، متعهد می شوند (یا برگشت داده می شوند). ماشه.

از این رو، تفاوت بین Pragma Exception_init و Raise_application_error چیست؟

پراگما استثنا init یک خطای Oracle را به یک استثنا با نام تبدیل می کند. اگر یک عملیات پایگاه داده یک ORA-00054 "منبع اشغال" را افزایش دهد، باید کد زیر را وارد کنید: Raise_application_error برای بالا بردن یک خطا استفاده می شود - استثنا_شروع برای مقابله با خطاها استفاده می شود (من حدس می زنم می توانید بگویید که آنها متضاد هستند در یک مسیر).

Sqlerrm چیست؟

SQLERRM عملکرد. کارکرد SQLERRM پیام خطای مرتبط با آرگومان شماره خطا را برمی گرداند. اگر آرگومان حذف شود، پیام خطای مرتبط با مقدار فعلی SQLCODE را برمی‌گرداند. SQLERRM بدون آرگومان فقط در یک کنترل کننده استثنا مفید است.

توصیه شده: