2012-02-28 1 views
1

挿入/更新ステートメントと組み合わせてチェックボックスを使っていくつか問題があります。現状では、利用可能なクレジットカードのレポートがあり、各行の横にチェックボックスがあります。ユーザーは承認したい数だけ選択し、送信ボタンを押してプロフィールを更新することができます。これは私が立ち往生している場所です。もしあれば更新し、そうでなければチェックボックスに基づいて新しいレコードを挿入します

上記のクレジットカードがあるかどうかに基づいてユーザープロファイルテーブルを更新する単一の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コマンドを使用することはできますか?それとも、私の目的をより良くする何かがありますか?

答えて

2

MERGEを使用できます。あなたは `DUAL 'からあなたのデータを選択するだけです

MERGE INTO ls_credit_cards dest 
    USING(SELECT apex_application.g_f01(i) credit_card_id, 
       :F125_USER_ID created_by, 
       sysdate created_on, 
       :P58_CARDS card_id, 
       :P58_USER user_id, 
       'Y' approved_flag 
      FROM dual) src 
     ON(dest.credit_card_id = src.credit_card_id) 
WHEN MATCHED 
THEN 
    UPDATE SET dest.approved_flag = src.approved_flag 
WHEN NOT MATCHED 
THEN 
    INSERT(credit_card_id, 
      created_by, 
      created_on, 
      card_id, 
      user_id, 
      approved_flag) 
    VALUES(src.credit_card_id, 
      src.created_by, 
      src.created_on, 
      src.card_id, 
      src.user_id, 
      src.approved_flag); 
+0

私は迷惑ではありませんが、私にとっては100%役に立たないです。既存のデータの更新には問題ありませんが、何らかの理由で新しいデータが挿入されることはありません。エラーメッセージはありませんので、なぜ新しいレコードを入れるのかについてもう一度迷っています。 – user1200142

+1

@ user1200142 - 挿入する新しい行がありますか?または、おそらく私の推測で一致する列が間違っていて、単に 'CREDIT_CARD_ID'列以上で一致する必要があります。おそらく他の 'ID'カラムのいくつかにも一致する必要がありますか? –

+0

問題は私自身の創造でした。私は間違って新しいカードとして挿入されるカードにクレジットカードIDを割り当てました。 IDをハードコードすると完全に動作します。それはちょっと私が創造的な問題解決の少しをしなければならないことを意味する!非常にありがとう、これは完璧です! – user1200142

関連する問題