У меня есть эта процедура:объем рейза исключения, обработки собственных исключений в коде PLSQL
create or replace PROCEDURE CONVERTE
IS
CURSOR oldemployees IS
SELECT *
FROM emp1
WHERE data_saida= NULL;
new_ndep emp1.num_dep%type;
bi_inexistente EXCEPTION;
dep_inexistente EXCEPTION;
employeeNr emp1.num_empregado%type;
BEGIN
FOR old_emp IN oldemployees
LOOP
employeeNr:= old_emp.num_empregado;
if (old_emp.bi = NULL) then
raise bi_inexistente;
else
IF (old_emp.num_dep>20) THEN
SELECT ndep_novo INTO new_ndep FROM Converte_dep WHERE ndep_antigo= old_emp.num_dep;
elsif (old_emp.num_dep = NULL) then
new_ndep:= 0;
raise dep_inexistente;
end if;
INSERT INTO EMP2 VALUES (old_emp.bi, old_emp.nome, old_emp.morada, old_emp.data_entrada, old_emp.data_saida, new_ndep);
COMMIT;
end if;
end loop;
EXCEPTION
when bi_inexistente then
INSERT INTO ERROS VALUES(employeeNr, 'BI Inexistente');
COMMIT;
when dep_inexistente then
INSERT INTO ERROS VALUES(employeeNr, 'Departamento Inexistente');
COMMIT;
end;
Я хочу сделать INSERT INTO етр2 VALUES (old_emp.bi, old_emp.nome, old_emp.morada, old_emp. data_entrada, old_emp.data_saida, new_ndep); даже после поднятия dep_inexistente, но после прочтения оракула, я немного смущен; В принципе, когда он равен нулю, я не хочу делать эту вставку, иначе я хочу вставить, даже если номер отдела равен нулю (к которому я обращаюсь 0).
Итак, это правильный код или как мне поднять мои исключения или обработать предопределенные исключения для моего случая?