我有问题。我正在做插入功能
case f1.RFD_CATEGORY_CODE when'O1' then 'C1GBC'
when 'O2' then 'C2GBC' else null end
该字段是必填字段,因此如果代码未采用C1GBC或C2GBC,则需要显示错误消息而不是null。如果代码采用C1GBC或C2GBC,则显示成功为消息。
我在下面创建了一个例外但是收到了错误
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;
/
答案 0 :(得分:1)
错误的代码也错误的语法.. 每当你的代码进入else条件时,它将抛出错误,因为它将执行2nd,如果它将转到“raise RFD_CAT_ERR;”部分并提出例外。 所以你应该在第二个If条件之后处理elsif中的错误。
答案 1 :(得分:1)
你说该字段是强制性的。如果你的意思是表中的字段被限制为not null
,那么你不必担心引发异常。 insert语句将为您完成。您所要做的就是在异常处理程序中捕获它并使用RAISE_APPLICATION_ERROR返回有意义的消息。
这样做而不是尝试打印错误消息。如果您的程序是由批处理程序调用的,那么就没有人可以看到它。
答案 2 :(得分:0)
这对我有用:D
CASE f1.RFD_CATEGORY_CODE
WHEN 'O1' THEN 'C1GBC'
WHEN 'O2' THEN 'C2GBC'
ELSE 'error'
然后引发异常
的任何错误