2016-05-16 52 views
-2

我创建了一个过程,它将三个值插入表中。但是,当我尝试插入值时,不会插入任何值。无法通过过程在oracle中插入值

这里是我的代码:

CREATE OR REPLACE PROCEDURE INSERTPRODUCTRECORD9 (p_PNAME IN VARCHAR2, p_CATEGORY IN VARCHAR2, p_PRICE IN NUMBER) 
AS 
BEGIN 
    INSERT INTO PRODUCT (PNAME,PRICE,CATEGORY) VALUES(p_PNAME, p_CATEGORY, p_PRICE); 
END; 

begin 
    INSERTPRODUCTRECORD9('TAB','GADGETS',30000); 
END; 
+3

rquired看来,你在你插入的字段的顺序错误 – Aleksej

+1

您在类别栏的价格列和p_price插入p_category。请更正您的INSERT语句并确认它是否仍然失败。此外,请分享您收到的错误。 –

回答

0

insert语句有不同的顺序不是值列出的列;所以您可能试图将VARCHAR2插入到NUMBER字段中。

CREATE OR REPLACE PROCEDURE INSERTPRODUCTRECORD9 (p_PNAME IN VARCHAR2, p_CATEGORY IN VARCHAR2, p_PRICE IN NUMBER) 
AS 
BEGIN 
    INSERT INTO PRODUCT (PNAME,CATEGORY,PRICE) VALUES(p_PNAME, p_CATEGORY, p_PRICE); 
END; 

begin 
    INSERTPRODUCTRECORD9('TAB','GADGETS',30000); 
END; 
0

提交的关键字可能太

CREATE OR REPLACE PROCEDURE INSERTPRODUCTRECORD9 (p_PNAME IN VARCHAR2, p_CATEGORY IN VARCHAR2, p_PRICE IN NUMBER) 
AS 
BEGIN 
    INSERT INTO PRODUCT (PNAME,PRICE,CATEGORY) VALUES(p_PNAME, p_PRICE,  p_CATEGORY); 
COMMIT; 
END; 

begin 
    INSERTPRODUCTRECORD9('TAB','GADGETS',30000); 
END; 
+0

一般来说,在一个程序中提交并不是一个好习惯。最上面的调用者应该决定事务何时开始和结束。如果匿名块调用过程两次,第二次失败,则无法回滚到一致状态。 –

+0

纠正订单并添加提交语句后,出现编译错误消息成功。 – sam