วีดีโอ: Raise_application_error ย้อนกลับหรือไม่
2024 ผู้เขียน: Lynn Donovan | [email protected]. แก้ไขล่าสุด: 2023-12-15 23:54
ภายในทริกเกอร์ 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 โดยไม่มีอาร์กิวเมนต์จะมีประโยชน์ในตัวจัดการข้อยกเว้นเท่านั้น
แนะนำ:
Pragma Exception_init และ Raise_application_error แตกต่างกันอย่างไร
ข้อยกเว้น Pragma init เปลี่ยน Oracle Error เป็นข้อยกเว้นที่มีชื่อ หากการดำเนินการฐานข้อมูลทำให้เกิด 'ทรัพยากรไม่ว่าง' ของ ORA-00054 คุณจะต้องเขียนโค้ด: Raise_application_error ใช้เพื่อ RAISE ข้อผิดพลาด - exception_init ใช้เพื่อจัดการกับข้อผิดพลาด (ฉันเดาว่าคุณสามารถพูดได้ว่าเป็นสิ่งที่ตรงกันข้าม)