Oracle
 sql >> база данни >  >> RDS >> Oracle

Въведение в обработката на изключения PL/SQL в базата данни на Oracle

Не можем да кажем, че кодът е стабилен, докато не може да се справи с всички изключения. Бъгове и внезапно прекратяване на програма са кошмарите в живота на програмиста. Никой програмист не иска да разработи код, който ще се срине по средата или ще се държи неочаквано. По този начин за гладкото изпълнение на софтуера е необходимо да се обработват всички видове изключения.

Познаването на проблема ви е първата стъпка към намирането на неговото решение. Така че нека научим повече за обработката на изключения в базата данни на Oracle.

Какво е изключение?

Всяко необичайно състояние или събитие, което прекъсва нормалния поток на инструкциите на вашата програма по време на изпълнение, е изключение. Или с прости думи можете да кажете, че изключението е грешка по време на изпълнение.

Информационен байт:
Изключенията са предназначени за обработка на грешки по време на изпълнение, а не за обработка на грешки при компилиране. Грешките, които възникват по време на фазата на компилация, се откриват от PL/SQL компилатора и се докладват обратно на потребителя.

Видове изключения

Има два типа PL/SQL изключения в базата данни на Oracle.

  1. Системно дефинирани изключения и
  2. Дефинирани от потребителя изключения

Системно дефинирани изключения

Системно дефинираните изключения се дефинират и поддържат имплицитно от сървъра на Oracle. Тези изключения са дефинирани основно в пакета Oracle STANDARD . Всеки път, когато възникне изключение вътре в програмата. Сървърът на Oracle съвпада и идентифицира подходящото изключение от наличния набор от изключения.

Системно дефинираните изключения имат предимно отрицателен код за грешка и съобщение за грешка. Тези грешки имат кратко име, което се използва с манипулатора на изключения.

Информационен байт:
Oracle използва две помощни функции SQLCODE и SQLERRM, за да извлече кода за грешка и съобщението за последното изключение.

Изключения, дефинирани от потребителя

За разлика от System-Define Exception, User-Define Exceptions се повдигат изрично в тялото на блока PL/SQL (по-точно в секцията BEGIN-END) с помощта на оператора RAISE.

Как да декларирате изключение, дефинирано от потребителя в Oracle Database.

Има три начина за деклариране на потребителски дефинирани изключения в Oracle Database.

  1. Чрез деклариране на променлива от тип EXCEPTION в секцията за декларации.

Можете да декларирате дефинирано от потребител изключение, като декларирате променлива с тип данни EXCEPTION във вашия код и я повдигнете изрично във вашата програма, като използвате оператор RAISE и ги обработвате в секцията за изключения.

  1. Декларирайте изключение, дефинирано от потребителя, като използвате функцията PRAGMA EXCEPTION_INIT.

С помощта на функцията PRAGMA EXCEPTION_INIT можете да съпоставите непредефиниран номер на грешка с променливата от тип данни EXCEPTION. Означава, че с помощта на същата функция можете да свържете променлива от тип данни EXCEPTION със стандартна грешка.

  1. Метод RAISE_APPLICATION_ERROR.

Използвайки този метод, можете да декларирате дефинирано от потребител изключение със собствен персонализиран номер на грешка и съобщение.

Това е всичко за този раздел. Надяваме се, че ви е харесало да прочетете това кратко въведение в обработката на изключения в Oracle Database. В този блог се опитах да отговоря на няколко въпроса, които можете да очаквате във вашето Oracle Database Certification, както и в интервюто .

Останете на линия, тъй като в следващия урок ще направим няколко страхотни примера, обясняващи гореспоменатите концепции, които ще ви помогнат да подобрите знанията си и ще ви дадем силно влияние върху концепциите за обработка на изключения PL/SQL. Благодаря и приятен ден!


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да получите максималната възможна дата в Oracle?

  2. Проблем с променливите за свързване на Oracle, които не използват правилно индекса

  3. Как да се свържете с Oracle, като използвате име на услуга вместо SID

  4. Lighty накратко

  5. EF и TransactionScope както за SQL Server, така и за Oracle без ескалиране/обхват до DTC?