2013-04-28 59 views
-1

我有以下程序如何將NEXTVAL納入我的程序?

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是主鍵,所以它是必需的。

回答

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; 
+0

謝謝,它現在的工作:) – 2013-04-28 05:24:27

+0

我還是新來的,所以真的不知道該怎麼做 – 2013-04-28 06:01:14

0

您將不得不先創建SEQUENCE。然後,您可以在idproduct列中使用sequencename.nextval。

+0

我已經有一個文件..只好回去檢查我的對象。謝謝 – 2013-04-28 05:27:01

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一些好的信息

+0

謝謝,得到它的工作:) – 2013-04-28 05:24:43

相關問題