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が表示されないのですか? PKで新しい行を挿入しましたか?なぜそれは働いていないのですか?申し訳ありませんが、なぜ私がIDBASKETITEMとして14の列を取得しないのか、非常に混乱しています。 – NonCreature0714
はい、関数へのパラメータとして 'p_basketid'を渡しましたが、insert文の最初の値は' p_basketid' ..を使用せず、代わりにOracleのシーケンス 'bb_idBasketitem_seq.NEXTVAL ' –
ああ、大丈夫、私はそれを見て、私はそれを逃したと信じられない - トンありがとう! – NonCreature0714