Исключение – прерывание, которое возникает при наступлении какого-либо события.
Встроенное исключение – исключение, которое определено в СУБД.
Пользовательское исключение – исключение, которое определил пользователь.
RAISE - инициализация именованного исключения.
RAISE_APPLICATION_ERROR - создает собственное сообщение об ошибке.
DECLARE
MYEXCEPTION EXCEPTION;
BEGIN
RAISE MYEXCEPTION;
EXCEPTION
WHEN MYEXCEPTION
THEN DBMS_OUTPUT.PUT_LINE('MYEXCEPTION');
DBMS_OUTPUT.PUT_LINE('MESSAGE = '||SQLERRM);
DBMS_OUTPUT.PUT_LINE('CODE = '||SQLCODE);
END;
DECLARE
MYEXCEPTION EXCEPTION;
PRAGMA EXCEPTION_INIT(MYEXCEPTION, -20001);
BEGIN
RAISE_APPLICATION_ERROR(-20001, 'MYEXCEPTION');
EXCEPTION
WHEN MYEXCEPTION
THEN DBMS_OUTPUT.PUT_LINE('MYEXCEPTION');
DBMS_OUTPUT.PUT_LINE('MESSAGE = '||SQLERRM);
DBMS_OUTPUT.PUT_LINE('CODE = '||SQLCODE);
WHEN OTHERS
THEN
DBMS_OUTPUT.PUT_LINE('OTHERS');
DBMS_OUTPUT.PUT_LINE('MESSAGE = '||SQLERRM);
DBMS_OUTPUT.PUT_LINE('CODE = '||SQLCODE);
END;
25. PL/SQL:константы, %TYPE, %ROWTYPE, записи (RECORD) и их применение, вложенные записи, присваивание записей.
Константы инициализируются при объявлении и не доступны для изменения. Предназначены для создания не модифицируемых значений.
%TYPE – используется для объявления переменной того же типа что и поле в необходимой таблице.
%ROWTYPE – используется для объявления записи того же типа, что и строка в необходимой таблице, представлении или курсоре.
Тип данных записи (RECORD) – тип данных, инкапсулирующий в себе несколько переменных одного или нескольких типов.
DECLARE
A CONSTANT NUMBER(3) := 101;
B CONSTANT VARCHAR(5) := 'ASD';
C CONSTANT CHAR(5) := 'QW';
BEGIN
DBMS_OUTPUT.PUT_LINE(A + 3);
DBMS_OUTPUT.PUT_LINE(B||C);
END;
DECLARE
A CHAR(5) DEFAULT 'AAA';
B INTEGER NOT NULL := 25;
BEGIN
DBMS_OUTPUT.PUT_LINE(A);
DBMS_OUTPUT.PUT_LINE(B);
END;
CREATE TABLE YWY
(
A INT,
B CHAR(5)
);
DECLARE
A KVCORE.YWY.B%TYPE := 'AAA';
Y KVCORE.YWY%ROWTYPE;
BEGIN
Y.A := 0;
Y.B := 'YYY';
DBMS_OUTPUT.PUT_LINE(A);
DBMS_OUTPUT.PUT_LINE(Y.A||' '||Y.B);
END;