აბრუნებს თუ არა Raise_application_error?
აბრუნებს თუ არა Raise_application_error?

ვიდეო: აბრუნებს თუ არა Raise_application_error?

ვიდეო: აბრუნებს თუ არა Raise_application_error?
ვიდეო: 9. Send app-specific error message with RAISE_APPLICATION_ERROR. 2024, მაისი
Anonim

ტრიგერის შიგნით ა RAISE_APPLICATION_ERROR აკეთებს არ შეასრულოს ა უკან დაბრუნება , ის აჩერებს მიმდინარე ოპერაციას, ანუ ერთ განახლებას/ჩასმა/წაშლას. ა უკან დაბრუნება უბრუნებს ყველა ცვლილებას მიმდინარე ტრანზაქციის ფარგლებში (ან მოცემულ Savepoint-მდე), ეს განსხვავებულია.

ამ გზით, რა არის Raise_application_error?

პასუხი: ამაღლება_აპლიკაციის_შეცდომა სინამდვილეში არის Oracle-ის მიერ განსაზღვრული პროცედურა, რომელიც დეველოპერს საშუალებას აძლევს დააყენოს გამონაკლისი და დააკავშიროს შეცდომის ნომერი და შეტყობინება პროცედურასთან. Oracle უზრუნველყოფს ამაღლება_აპლიკაციის_შეცდომა პროცედურა, რომელიც საშუალებას მოგცემთ გაზარდოთ პერსონალური შეცდომების ნომრები თქვენს აპლიკაციებში.

გარდა ამისა, რა მოხდება, როდესაც rollback განცხადება შესრულდება ტრიგერის შიგნით? Როდესაც გამომწვევი ხანძრის მიმდინარე ტრანზაქცია ჯერ კიდევ არ არის დასრულებული. როგორც COMMIT წყვეტს გარიგებას, რაც მათ საშუალებას აძლევს გამომწვევებში იქნებოდა დაარღვიე სამუშაო ერთეული. ასე იცვლება შესრულებულია ტრიგერით ჩადენილია (ან უკან დაბრუნდა) მფლობელი ტრანზაქციის მიერ, რომელმაც გასცა DML, რომელმაც გაათავისუფლა ის გამომწვევი.

აქედან, რა განსხვავებაა Pragma Exception_init-სა და Raise_application_error-ს შორის?

პრაგმა გამონაკლისი init აქცევს Oracle-ის შეცდომას დასახელებულ გამონაკლისად. თუ მონაცემთა ბაზის ოპერაცია იწვევს ORA-00054 "რესურს დატვირთული", თქვენ მოგიწევთ კოდირება:. Raise_aplication_error გამოიყენება შეცდომის გასაზრდელად - გამონაკლისი_დაწყება გამოიყენება შეცდომებთან გამკლავებისთვის (ვფიქრობ, შეიძლება ითქვას, რომ ისინი საპირისპიროა ში გზა).

რა არის Sqlerrm?

SQLERRM ფუნქცია. Ფუნქცია SQLERRM აბრუნებს შეცდომის შეტყობინებას, რომელიც დაკავშირებულია შეცდომის ნომრის არგუმენტთან. თუ არგუმენტი გამოტოვებულია, ის აბრუნებს შეცდომის შეტყობინებას, რომელიც დაკავშირებულია SQLCODE-ის მიმდინარე მნიშვნელობასთან. SQLERRM არგუმენტის გარეშე გამოსადეგია მხოლოდ გამონაკლისის დამმუშავებელში.

გირჩევთ: