异常处理——plsql
Exception handling - plsql
我有问题。正在执行插入功能
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;
/
错误的代码也错误的语法..
每当您的代码进入 else 条件时,如果它将转到 "raise RFD_CAT_ERR;" 部分并引发异常,它将在执行 2nd 后抛出错误。
所以你应该在 2nd If 条件之后处理 elsif 中的错误。
您说该字段是必填字段。如果你的意思是 table 中的字段被限制为 not null
那么你不必担心引发异常。 insert 语句会为你做到这一点。您所要做的就是在您的异常处理程序中捕获它并使用 RAISE_APPLICATION_ERROR 到 return 一个有意义的消息。
这样做而不是尝试打印错误消息。如果你的程序被批处理调用,就没有人看到了。
这对我有用:D
CASE f1.RFD_CATEGORY_CODE
WHEN 'O1' THEN 'C1GBC'
WHEN 'O2' THEN 'C2GBC'
ELSE 'error'
然后引发异常的任何错误
我有问题。正在执行插入功能
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;
/
错误的代码也错误的语法.. 每当您的代码进入 else 条件时,如果它将转到 "raise RFD_CAT_ERR;" 部分并引发异常,它将在执行 2nd 后抛出错误。 所以你应该在 2nd If 条件之后处理 elsif 中的错误。
您说该字段是必填字段。如果你的意思是 table 中的字段被限制为 not null
那么你不必担心引发异常。 insert 语句会为你做到这一点。您所要做的就是在您的异常处理程序中捕获它并使用 RAISE_APPLICATION_ERROR 到 return 一个有意义的消息。
这样做而不是尝试打印错误消息。如果你的程序被批处理调用,就没有人看到了。
这对我有用:D
CASE f1.RFD_CATEGORY_CODE
WHEN 'O1' THEN 'C1GBC'
WHEN 'O2' THEN 'C2GBC'
ELSE 'error'
然后引发异常的任何错误