异常处理-plsql
我有个问题。我在做一个插入函数异常处理-plsql,plsql,Plsql,我有个问题。我在做一个插入函数 case f1.RFD_CATEGORY_CODE when'O1' then 'C1GBC' when 'O2' then 'C2GBC' else null end 该字段是必填字段,因此如果代码未采用C1GBC或C2GBC,则需要显示错误消息,而不是null。如果代码采用C1GBC或C2GBC,则将successful显示为消息 我在下面创建了一个异常,但出现错误 create or replace procedure CTP_CODE as declar
case f1.RFD_CATEGORY_CODE when'O1' then 'C1GBC'
when 'O2' then 'C2GBC' else null end
该字段是必填字段,因此如果代码未采用C1GBC或C2GBC,则需要显示错误消息,而不是null。如果代码采用C1GBC或C2GBC,则将successful显示为消息
我在下面创建了一个异常,但出现错误
create or replace procedure CTP_CODE as
declare
--RFD_CAT_ERR varchar2;
RFD_CAT_ERR EXCEPTION;
begin
if RFD_CATEGORY_CODE is '01' then RFD_CATEGORY_CODE is 'C1GBC';
DBMS_OUTPUT.PUT_LINE ('No1. Successful Operation');
else
if RFD_CATEGORY_CODE is '02' then RFD_CATEGORY_CODE is 'C2GBC';
DBMS_OUTPUT.PUT_LINE ('No2. Successful Operation');
end if;
raise RFD_CAT_ERR;
end if;
EXCEPTION
when RFD_CAT_ERR then
DBMS_OUTPUT.PUT_LINE ('Error message!');
end;
/
错误的代码和错误的语法。。 无论何时代码处于else状态,它都会在执行第二个后抛出错误,如果它将转到“raise RFD_CAT_ERR;”部分并引发异常。
因此,您应该在第二个If条件之后处理elsif中的错误。您说该字段是必需的。如果这意味着表中的字段被约束为
notnull
,那么就不必担心引发异常。insert语句将为您执行此操作。您所要做的就是在异常处理程序中捕获它,并使用RAISE\u APPLICATION\u ERROR返回有意义的消息
这样做,而不是试图打印错误消息。如果批处理过程调用了您的过程,那么将没有人看到它。这对我来说很有效:D
CASE f1.RFD_CATEGORY_CODE
WHEN 'O1' THEN 'C1GBC'
WHEN 'O2' THEN 'C2GBC'
ELSE 'error'
然后针对异常引发任何错误如果RFD_类别_代码='01',则RFD_类别_代码='C1GBC';DBMS_OUTPUT.PUT_LINE('No1.Successful Operation');否则,如果RFD_类别代码为'02',则RFD_类别代码为'C2GBC';DBMS_OUTPUT.PUT_LINE('No2.Successful Operation');否则将引发RFD_CAT_错误;如果结束;如果结束;是的,这是我代码的下一步。这很有帮助,谢谢:)