有一个'EXAMPLE_TABLE'表,其中包含两列。第一列'ID'存储值'5555',第二列'IS_EXIST'存储char 1字节'0'。如果这个值不存在,如何创建一个“INSERT INTO”的过程,如果'ID'与查询和'IS_EXIST'== 0相同,则创建一个'UPDATE',或抛出一些将在java如果'ID'相同和'IS_EXIST'!= 0.我考虑了合并并主要插入解决此问题的方法。
它必须大致如下:
if(ID doesn't exist)
insert into
if(ID exist and IS_EXIST equals 0)
update
else
throw Exception
但这会在程序中看起来如何?
答案 0 :(得分:1)
如果你想在没有合并的情况下使用过程抛出或引发一些异常,这是一种简单的方法:
procedure PC_INSERT_OR_UPDATE(P_ID number) as
cursor C_1 is
select M.ID,
C.IS_EXIST
from MY_TABLE M
where M.ID = P_ID;
MSG clob;
begin
for C in C_1 loop
begin
if C.ID is null then
insert into MY_TABLE
(ID,
IS_EXIST)
values
(P_ID,
1);
elsif C.ID is not null and C.IS_EXIST = 0 then
update MY_TABLE M
set M.IS_EXIST = 1
where M.ID = P_ID;
else
RAISE_APPLICATION_ERROR(-20001, 'My exception was raised');
end if;
exception
when others then
rollback;
MSG := 'Error - ' || TO_CHAR(sqlcode) || ' - ' || sqlerrm;
end;
end loop;
end;