Өргөх_програмын_алдаа буцаах уу?
Өргөх_програмын_алдаа буцаах уу?

Видео: Өргөх_програмын_алдаа буцаах уу?

Видео: Өргөх_програмын_алдаа буцаах уу?
Видео: Как избавиться от усталости? Верните свою энергию! Желчь может всё! 2024, May
Anonim

Гох дотор а RAISE_APPLICATION_ERROR үүнийг хийдэг гүйцэтгэхгүй а БУЦААХ , энэ нь одоогийн үйлдлийг зогсооно, өөрөөр хэлбэл нэг UPDATE/INSERT/DELETE. А Буцаах одоогийн гүйлгээний бүх өөрчлөлтийг буцаана (эсвэл өгөгдсөн Savepoint хүртэл), энэ нь өөр юм.

Ийм байдлаар Raise_application_error гэж юу вэ?

Хариулт: The өргөдлийн_алдаа Энэ нь үнэндээ Oracle-ийн тодорхойлсон процедур бөгөөд хөгжүүлэгч нь онцгой тохиолдол гаргаж, алдааны дугаар болон мессежийг процедуртай холбох боломжийг олгодог. Oracle хангадаг өргөдлийн_алдаа Програмууд доторх тусгай алдааны тоог нэмэгдүүлэх боломжийг танд олгох журам.

Цаашилбал, триггер дотор буцаах мэдэгдлийг гүйцэтгэхэд юу болох вэ? Үед гох одоогийн гүйлгээ нь дуусаагүй хэвээр байна. Учир нь COMMIT нь гүйлгээг дуусгавар болгохыг зөвшөөрдөг триггерүүдэд болно ажлын нэгжийг эвдэх. Тиймээс өөрчлөгддөг триггерээр гүйцэтгэсэн гүйлгээ хийсэн DML-г гаргасан эзэмшигчийн гүйлгээгээр хийгдсэн (эсвэл буцаагдсан). гох.

Прагма Exception_init болон Raise_application_error хоёрын ялгаа нь юу вэ?

прагма exception init нь Oracle алдааг нэрлэгдсэн үл хамаарах зүйл болгон хувиргадаг. Өгөгдлийн сангийн үйл ажиллагаа нь ORA-00054 "нөөц завгүй" гэсэн утгыг үүсгэвэл та дараах кодыг оруулах хэрэгтэй болно. Хэрэглээний_алдаа_өсгөх алдаа гаргахад ашигладаг - exception_init алдаатай харьцахад ашигладаг (би тэдгээрийг эсрэг тэсрэг гэж хэлж болно дотор арга зам).

Sqlerrm гэж юу вэ?

SQLERRM Чиг үүрэг. Функц SQLERRM алдааны дугаарын аргументтай холбоотой алдааны мессежийг буцаана. Хэрэв аргументыг орхигдуулсан бол SQLCODE-ийн одоогийн утгатай холбоотой алдааны мэдэгдлийг буцаана. SQLERRM ямар ч аргументгүй нь зөвхөн онцгой тохиолдлын зохицуулагчид хэрэг болно.

Зөвлөмж болгож буй: