我有一张客户表。
我创建了可用于将新数据插入表中的存储过程。但是,如果我想使用相同的过程来更新或删除该表中的数据,该怎么办?我可以轻松地执行此操作,还是必须为每个函数使用单独的函数/过程?
create or replace procedure add_customer(custid in table.id%type,
name table.name%type)
is
begin
insert into table(id, name)
values(id, name);
commit;
end;
/
答案 0 :(得分:0)
您可以在下面的示例中添加action
之类的参数,并在代码中使用它:
create or replace procedure modify_customer(
action in varchar2, custid in table.id%type, custname table.name%type)
is
begin
if action = 'insert' then
insert into table(id, name) values(custid, name);
commit;
elsif action = 'delete' then
delete from table where id = custid and name = custname;
commit;
end if;
end;
答案 1 :(得分:0)
您可以在add_customer过程中添加一个discriminator参数,该过程表示该操作是INSERT,UPDATE还是DELETE。基于此参数,您可以创建所需的插入,更新或删除语句。这样,您就可以对所有操作使用通用过程。
就使用一个过程或多个过程而言,如果表是一个列数有限的简单表,那么一个过程应该没问题。但是,一旦表中的列数增加,一个过程可能会变得比所需的更复杂。