挿入/更新ステートメントと組み合わせてチェックボックスを使っていくつか問題があります。現状では、利用可能なクレジットカードのレポートがあり、各行の横にチェックボックスがあります。ユーザーは承認したい数だけ選択し、送信ボタンを押してプロフィールを更新することができます。これは私が立ち往生している場所です。もしあれば更新し、そうでなければチェックボックスに基づいて新しいレコードを挿入します
上記のクレジットカードがあるかどうかに基づいてユーザープロファイルテーブルを更新する単一のPSQLプロセスが必要です。存在しない場合は、関連するすべての情報を挿入します。既に存在する場合は、 'Approved_flag'を 'Y'に変更してレコードを更新するだけです。私は、新しいレコードを挿入し、このコードの塊を、書いて、それが正常に動作します:
FOR i in 1..APEX_APPLICATION.G_F01.count
LOOP
INSERT INTO ls_credit_cards(credit_card_id, created_by, created_on, card_id, user_id, approved_flag)
VALUES (apex_application.g_f01(i), :F125_USER_ID,sysdate, :P58_CARDS, :P58_USER, 'Y');
END LOOP;
私はORACLEが/他のコマンドの場合、通常サポートしていないことを理解し、私はこのビットを調査していることを発見しました私はおそらく、MERGEコマンドを使用する必要がありますが、私が見てきたものはすべて2つのテーブルを使用します。私が使用しているのは1つで、すべてのデータがレポート/チェックボックスから取得されていますので、ここでは紛失しています。このインスタンスでMERGEコマンドを使用することはできますか?それとも、私の目的をより良くする何かがありますか?
私は迷惑ではありませんが、私にとっては100%役に立たないです。既存のデータの更新には問題ありませんが、何らかの理由で新しいデータが挿入されることはありません。エラーメッセージはありませんので、なぜ新しいレコードを入れるのかについてもう一度迷っています。 – user1200142
@ user1200142 - 挿入する新しい行がありますか?または、おそらく私の推測で一致する列が間違っていて、単に 'CREDIT_CARD_ID'列以上で一致する必要があります。おそらく他の 'ID'カラムのいくつかにも一致する必要がありますか? –
問題は私自身の創造でした。私は間違って新しいカードとして挿入されるカードにクレジットカードIDを割り当てました。 IDをハードコードすると完全に動作します。それはちょっと私が創造的な問題解決の少しをしなければならないことを意味する!非常にありがとう、これは完璧です! – user1200142