如何在我的程序中加入NEXTVAL?

时间:2013-04-28 02:26:53

标签: oracle procedures

我有以下程序

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是主键,因此需要它。

3 个答案:

答案 0 :(得分:1)

  1. 创建一个名为nextID的序列。
  2. 现在使用以下代码:
  3. 创建一个名称为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;
    

答案 1 :(得分: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

的一些好消息

答案 2 :(得分:0)

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