-1

我有以下程序

create or replace 
procedure prod_add_sp
    (p_idproduct in bb_product.idproduct%type,
    p_prodname in bb_product.productname%type, 
    p_descrip in bb_product.description%type,
    p_prodimage in bb_product.productimage%type,
    p_prodprice in bb_product.price%type,
    p_prodactive in bb_product.active%type)
is
begin
   insert into bb_product(idproduct,productname,description,productimage,price,active)
   values (p_idproduct,p_prodname,p_descrip,p_prodimage,p_prodprice,p_prodactive);

commit;
end;

如何使用该seq.nextval部分修改上述内容,以便在执行时插入具有唯一主键的新行?IDPRODUCT是主键,所以它是必需的。

4

3 回答 3

1
  1. 创建一个具有任何名称的序列,例如 nextID。
  2. 现在使用下面的代码:

创建一个具有任何名称的序列,例如 nextID。现在使用下面的代码:

create or replace procedure prod_add_sp (p_idproduct in bb_product.idproduct%type, p_prodname in bb_product.productname%type, p_descrip in bb_product.description%type, p_prodimage in bb_product.productimage%type, p_prodprice in bb_product.price%type, p_prodactive in bb_product.active%type) is
begin 
insert into bb_product(idproduct,productname,description,
productimage,price,active)
values (nextID.nextVal,p_prodname,p_descrip,
p_prodimage,p_prodprice,p_prodactive);

commit; 
end;
于 2013-04-28T02:32:12.403 回答
1

您需要先创建一个序列,即:

CREATE SEQUENCE productsID_seq
 START WITH     0
 INCREMENT BY   1
 NOMAXVALUE;

然后在values (...一行中:

insert into bb_product(idproduct,productname,description,productimage,price,active)
   values (productsID_seq.nextval,...

这是来自Oracle DB Docs的一些好信息

于 2013-04-28T02:32:45.300 回答
0

您必须先创建 SEQUENCE。然后您可以在 idproduct 列中使用 sequencename.nextval。

于 2013-04-28T02:30:51.517 回答