Raise_application_error ย้อนกลับหรือไม่
Raise_application_error ย้อนกลับหรือไม่

วีดีโอ: Raise_application_error ย้อนกลับหรือไม่

วีดีโอ: Raise_application_error ย้อนกลับหรือไม่
วีดีโอ: PL/SQL tutorial 48: Declare User-Define Exception using RAISE_APPLICATION_ERROR 2024, พฤศจิกายน
Anonim

ภายในทริกเกอร์ a RAISE_APPLICATION_ERROR ทำ ไม่ทำ ย้อนกลับ จะยกเลิกการดำเนินการปัจจุบัน เช่น UPDATE/INSERT/DELETE เดียว NS ย้อนกลับ คืนค่าการเปลี่ยนแปลงทั้งหมดภายในธุรกรรมปัจจุบัน (หรือมากถึง Savepoint ที่กำหนด) ซึ่งแตกต่างออกไป

ด้วยวิธีนี้ Raise_application_error คืออะไร?

ตอบ ยก_application_error อันที่จริงเป็นขั้นตอนที่กำหนดโดย Oracle ซึ่งช่วยให้นักพัฒนาสามารถยกข้อยกเว้นและเชื่อมโยงหมายเลขข้อผิดพลาดและข้อความกับขั้นตอน Oracle ให้ ยก_application_error ขั้นตอนเพื่อให้คุณสามารถเพิ่มหมายเลขข้อผิดพลาดที่กำหนดเองภายในแอปพลิเคชันของคุณ

นอกจากนี้ จะเกิดอะไรขึ้นเมื่อมีการเรียกใช้คำสั่งย้อนกลับภายในทริกเกอร์ เมื่อ สิ่งกระตุ้น ไฟไหม้ธุรกรรมปัจจุบันยังไม่เสร็จสมบูรณ์ เนื่องจาก COMMIT ยุติการทำธุรกรรมที่อนุญาตให้พวกเขา ในทริกเกอร์จะ ทำลายหน่วยของการทำงาน จึงเปลี่ยนไป ดำเนินการในทริกเกอร์ มีความมุ่งมั่น (หรือย้อนกลับ) โดยธุรกรรมการเป็นเจ้าของซึ่งออก DML ที่เรียกใช้ สิ่งกระตุ้น.

ดังนั้น อะไรคือความแตกต่างระหว่าง Pragma Exception_init และ Raise_application_error?

Pragma ข้อยกเว้น init เปลี่ยน Oracle Error เป็นข้อยกเว้นที่มีชื่อ หากการดำเนินการฐานข้อมูลทำให้ ORA-00054 "ทรัพยากรไม่ว่าง" คุณจะต้องเขียนโค้ด: Raise_application_error ใช้เพื่อ RAISE ข้อผิดพลาด - ข้อยกเว้น_init ใช้เพื่อจัดการกับข้อผิดพลาด (ฉันเดาว่าคุณคงพูดได้ว่ามันตรงกันข้าม ใน ทาง).

Sqlerrm คืออะไร?

SQLERRM การทำงาน. ฟังก์ชั่น SQLERRM ส่งคืนข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับอาร์กิวเมนต์หมายเลขข้อผิดพลาด หากละเว้นอาร์กิวเมนต์ จะส่งกลับข้อความแสดงข้อผิดพลาดที่เกี่ยวข้องกับค่าปัจจุบันของ SQLCODE SQLERRM โดยไม่มีอาร์กิวเมนต์จะมีประโยชน์ในตัวจัดการข้อยกเว้นเท่านั้น

แนะนำ: