Raise_application_error có khôi phục không?
Raise_application_error có khôi phục không?

Video: Raise_application_error có khôi phục không?

Video: Raise_application_error có khôi phục không?
Video: 2. An exception raised does not automatically roll back uncommitted changes to tables. 2024, Tháng mười một
Anonim

Bên trong một kích hoạt RAISE_APPLICATION_ERROR không không thực hiện một ROLLBACK , nó hủy bỏ hoạt động hiện tại, tức là một CẬP NHẬT / CHÈN / XÓA duy nhất. MỘT Khôi phục hoàn nguyên tất cả các thay đổi trong giao dịch hiện tại (hoặc lên đến Savepoint nhất định), điều đó khác.

Theo cách này, Raise_application_error là gì?

Trả lời raise_application_error thực sự là một thủ tục được Oracle định nghĩa cho phép nhà phát triển đưa ra một ngoại lệ và liên kết số lỗi và thông báo với thủ tục. Oracle cung cấp raise_application_error quy trình cho phép bạn tăng số lỗi tùy chỉnh trong các ứng dụng của bạn.

Hơn nữa, điều gì sẽ xảy ra khi một câu lệnh rollback được thực thi bên trong một trình kích hoạt? Khi mà Kích hoạt cháy giao dịch hiện tại vẫn chưa hoàn tất. Khi COMMIT kết thúc một giao dịch cho phép họ trong trình kích hoạt sẽ phá vỡ đơn vị công việc. Vì vậy, những thay đổi thực hiện trong một trình kích hoạt được cam kết (hoặc quay trở lại) bởi giao dịch sở hữu đã phát hành DML đã kích hoạt Kích hoạt.

Trong đó, sự khác biệt giữa Pragma Exception_init và Raise_application_error là gì?

pragma init ngoại lệ biến Lỗi Oracle thành một ngoại lệ được đặt tên. Nếu một hoạt động cơ sở dữ liệu làm tăng ORA-00054 "tài nguyên bận", bạn sẽ phải viết mã:. Raise_application_error được sử dụng để PHÁT SINH một lỗi - exception_init được sử dụng để đối phó với các lỗi (tôi đoán bạn có thể nói chúng đối lập nhau trong một đường).

Sqlerrm là gì?

SQLERRM Hàm số. Chức năng SQLERRM trả về thông báo lỗi được liên kết với đối số lỗi-số của nó. Nếu đối số bị bỏ qua, nó sẽ trả về thông báo lỗi được liên kết với giá trị hiện tại của SQLCODE. SQLERRM không có đối số chỉ hữu ích trong một trình xử lý ngoại lệ.

Đề xuất: