我对SQL- procedure还是个新手,但我已经写了一个在我的datatable中添加一行的过程。这可以很好地工作,但当我运行该过程两次时,我希望避免该行再次添加到基于Oracle-Database的datatable中。所以我的问题是,如何在case命令中设置“如果已经存在”-condition。
我的代码看起来像这样:
...
case number
when 5 then
/* if not exists` <<--- i need something to avoid doubled entrys */
pi_event_line_add(5,'xxx' ....);
end case;
end procedure;发布于 2016-06-23 19:16:09
一种解决方案是先查询表,然后再决定插入。像这样:
declare cnt number;
begin
select count(*) into cnt from your_table where id = 5;
if cnt = 0 then
pi_event_line_add(5,'xxx'...);
end if;此外,如果存储"5“的列确实应该是唯一的,那么您可能希望在该列上添加唯一约束。
发布于 2016-06-23 19:38:31
在pi_event_line_add中使用MERGE语句,而不是INSERT。在MERGE中,只实现语句的WHEN NOT MATCHED INSERT部分。
祝你好运。
https://stackoverflow.com/questions/37989696
复制相似问题