В PL / SQL есть ключевое слово EXCEPTION для обработки исключений.
EXCEPTION
Затем вы можете установить внутри блока PL / SQL, что делать, если выполнение кода PL / SQL вызывает конкретное исключение.
WHEN <name of the exception> THEN <statements to handle it>;
Если вам нужен запасной вариант для всех не упомянутых исключений, используйте OTHERS:
WHEN OTHERS THEN <statements to handle it>;
Чтобы вызвать настраиваемое исключение для пользователя с настраиваемым текстом ошибки, используйте RAISE_APPLICATION_ERROR.
Пример:
CREATE OR REPLACE PROCEDURE "APEXDEV01"."ADD_OMT_SOURCE" (
rating VARCHAR2,
submission_status VARCHAR2,
uoaname VARCHAR2,
scival_cit_category NUMBER,
total_authors BINARY_DOUBLE,
selfselected VARCHAR2,
ref2014 VARCHAR2)
AS
BEGIN
INSERT INTO "APEXDEV01"."OMT_SOURCE" VALUES (
rating, submission_status, uoaname, SYSDATE, SYSDATE,
scival_cit_category, total_authors, selfselected, ref2014);
EXCEPTION
WHEN "Submission_Rating_not_valid" THEN
RAISE_APPLICATION_ERROR(-20081, "Submission rating not valid");
WHEN OTHERS THEN
RAISE_APPLICATION_ERROR(-20086,sqlerrm);
END;
/
Стоит также упомянуть, что условие в вашем выражении DDL объединяет AND и OR, и некоторые из них должны управляться скобками, чтобы избежать путаницы и путаницы в его логике.