1
我正在學習PL/SQL,並且我創建了此過程,它編譯;我沒有足夠的經驗與PL/SQL到那個地方我錯在哪裏:PL/SQL:行未插入
只是要清楚,我的問題是,「我做了什麼錯?」
我使用Datagrip和端口轉發到OracleVM;我懷疑那裏有問題,因爲我之前插入了行,但這不起作用。
CREATE OR REPLACE PROCEDURE basket_add_sp
(
p_basketid IN bb_basketitem.idbasket%TYPE,
p_prodid IN bb_basketitem.idproduct%TYPE,
p_qty IN bb_basketitem.quantity%TYPE,
p_price IN bb_basketitem.price%TYPE,
p_size IN bb_basketitem.option1%TYPE,
p_form IN bb_basketitem.option2%TYPE
)
IS
BEGIN
INSERT INTO BB_BASKETITEM(idbasketitem, idproduct, quantity, price, idbasket, option1, option2)
VALUES (bb_idBasketitem_seq.NEXTVAL, p_prodid, p_qty, p_price, p_basketid, p_size, p_form);
COMMIT;
END;
其中完成。
[2016-07-21 21:18:28] completed in 18ms
我運行的程序:
BEGIN
basket_add_sp(14,8,1,10.80,2,4);
END;
而且完成。
[2016-07-21 21:18:39] completed in 14ms
但是,當我檢查表來驗證,沒有行返回。
SELECT * FROM BB_BASKETITEM WHERE IDBASKETITEM = 14;
返回此:
然而,當我檢查表,還有其他行有。
SELECT * FROM BB_BASKETITEM WHERE IDBASKETITEM = 20;
返回此:
這確實顯示所有'IDPRODUCT'是8,但爲什麼不顯示'IDBASKETITEM' 14?我沒有插入一個新的行作爲PK,不是嗎?爲什麼沒有工作?對不起,我只是很困惑,爲什麼我沒有與IDBASKETITEM 14行。 – NonCreature0714
是的,你在'p_basketid'作爲參數傳遞給函數..但在INSERT語句中的第一個值不使用'p_basketid' ..而是它使用一個值,它從Oracle序列'得到bb_idBasketitem_seq.NEXTVAL ' –
哦,好吧,我現在看到它,不敢相信我錯過了它 - 謝謝! – NonCreature0714