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

Как да декларирате потребителско дефинирано изключение с помощта на променлива за изключение в базата данни на Oracle

Във въведението в PL/SQL изключенията научихме, че има три начина за деклариране на изключения, дефинирани от потребителя в Oracle Database. В този урок ще проучим първия начин и ще научим как да декларираме изключение, дефинирано от потребителя, като използваме променлива с тип данни Exception.

Декларирането на дефинирано от потребител изключение с помощта на променлива Exception е процес в три стъпки. Тези три стъпки са –

  1. Декларирайте променлива с тип данни за изключение – Тази променлива ще поеме цялата тежест на плещите си.
  2. Повишете изключението – Това е частта, в която казвате на компилатора за условието, което ще задейства изключението.
  3. Обработка на изключението – Това е последният раздел, в който указвате какво ще се случи, когато се задейства грешката, която сте повдигнали.

В този урок за PL/SQL ще ви обясня всяка от тези три стъпки с помощта на PL/SQL код.

За демонстрационна цел ще напиша код, който ще провери дали делителят е нула или не в операцията на разделяне. Ако е нула, ще възникне грешка и ще бъде показана на потребителя, в противен случай на изходния екран ще бъде върната действителна стойност, която е резултат от аритметиката на деленето.

Стъпка 1:Декларирайте променлива с тип данни Exception

Под променлива Exception имам предвид променлива с тип данни Exception. Както всяка друга променлива PL/SQL, можете да декларирате променлива Exception в секцията за декларация на анонимния, както и наименуван PL/SQL блок. Тази променлива за изключение ще работи като дефинирано от потребителя изключение за вашия код.

DECLARE
  var_dividend NUMBER := 24;
  var_divisor NUMBER := 0;
  var_result NUMBER;
  ex_DivZero EXCEPTION;

В този раздел за декларации имаме 4 променливи. Сред тези 4 променливи първите 3 са променливи тип данни за нормален номер, а 4-та, която е ex_DivZero, е специалната променлива тип данни EXCEPTION. Тази променлива ще стане нашето потребителско изключение за тази програма.

Стъпка 2:Повишете изключението

Следващата стъпка след деклариране на променлива Exception е да се издигне изключението. За да повдигнем изключението в PL/SQL, използваме оператор Raise.

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

BEGIN
  IF var_divisor = 0 THEN
    RAISE ex_DivZero;
  END IF;

Тук условието за повишаване е придружено от условието IF-THEN. С помощта на това можем да избегнем нежелани превключвания по време на контролния поток на програмата. Използвайки условието If ние се уверяваме, че тази грешка ще влезе в действие само когато делителят е равен на 0.

var_result := var_dividend/var_divisor;
  DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);

След като напишете логиката за издигане на грешката, можете да напишете другите си изпълними оператори на кода, точно както направихме тук. След оператора Raise изпълняваме аритметиката на операцията за разделяне и съхраняваме резултата в променливата var_result, както и го показваме обратно като изход с помощта на оператора DBMS OUTPUT.

Стъпка 3:Обработете изключението

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

EXCEPTION WHEN ex_DivZero THEN
    DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero');
END;
/

Тук имаме манипулатора на изключения за променливата ex_DivZero. В секцията за обработка на изключения имаме израз на DBMS OUTPUT, който ще се покаже, когато се появи грешка, дефинирана от нашия потребител, която е ex_DivZero.

Сега нека групираме всички тези парчета кодове заедно.

Грешка за разделяне на нула с помощта на PL/SQL User-define Exception в Oracle Database

SET SERVEROUTPUT ON;
DECLARE
  var_dividend NUMBER := 24;
  var_divisor NUMBER := 0;
  var_result NUMBER;
  ex_DivZero EXCEPTION;
BEGIN
  IF var_divisor = 0 THEN
    RAISE ex_DivZero;
  END IF;
  var_result := var_dividend/var_divisor;
  DBMS_OUTPUT.PUT_LINE('Result = ' ||var_result);
  EXCEPTION WHEN ex_DivZero THEN
      DBMS_OUTPUT.PUT_LINE('Error Error - Your Divisor is Zero');
END;
/

Преди да стартирате тази програма, уверете се, че сте включили SERVEROUTPUT, в противен случай няма да можете да видите резултата.

Както в стъпка 1, ние задаваме стойността на делителя на нула, което от своя страна ще повиши грешката в дефинирането на потребителя ex_DivZero, тъй като при компилирането на горния код ще видите низа „Грешка за грешка – Вашият делител е нула“ същият, който посочихме в нашия манипулатор на изключения (стъпка 3).

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SEC_CASE_SENSTIVE_LOGON в 12c

  2. ORA-06508:PL/SQL:не можа да намери извикан програмен модул

  3. Защита на базата данни на Oracle – криптиране и декриптиране

  4. Кога Oracle индексира стойности на нулеви колони?

  5. Hibernate не можа да извлече SequenceInformation от базата данни