2016-07-22 15 views
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; 

戻り値:私はテーブルをチェックするとき

enter image description here

はしかし、他の行があります。

SELECT * FROM BB_BASKETITEM WHERE IDBASKETITEM = 20; 

戻り値この:

enter image description here

答えて

2
SELECT * FROM BB_BASKETITEM WHERE IDPRODUCT = 8; 

IDBASKETITEMは、あなたが挿入を行うときに、Oracleは、シーケンスによって生成固有のIDです。

+0

すべてのIDPRODUCTは8ですが、なぜIDBASKETITEMが表示されないのですか? PKで新しい行を挿入しましたか?なぜそれは働いていないのですか?申し訳ありませんが、なぜ私がIDBASKETITEMとして14の列を取得しないのか、非常に混乱しています。 – NonCreature0714

+1

はい、関数へのパラメータとして 'p_basketid'を渡しましたが、insert文の最初の値は' p_basketid' ..を使用せず、代わりにOracleのシーケンス 'bb_idBasketitem_seq.NEXTVAL ' –

+0

ああ、大丈夫、私はそれを見て、私はそれを逃したと信じられない - トンありがとう! – NonCreature0714