アプリ版:「スタンプのみでお礼する」機能のリリースについて

テーブルAとテーブルBがあります。
テーブルAとテーブルBのレイアウト(列名・サイズetc)
は、まったく同じです。唯一、違う点は、テーブルAは
フラグをもっている点です。
ここで、考えていただきたいのですが
テーブルAのフラグが1のレコードは、テーブルBに
フラグ以外のレイアウトをINSERTし、フラグが2のレコードは、一意のコードをキーにしてDELETEを行う処理を
行いたいのですが、下記のような感じでよいのでしょうか?

CREATE OR REPLACE PROCEDURE A
AS
CURSOR B IS SELECT * FROM A;
BIGIN
FOR D IN B LOOP
IF D.フラグ=1 THEN
INSERT INTO B VALUES(…省略
ELSIF D.フラグ=2 THEN
DELETE FROM B WHERE …省略
END IF;
COMMIT;
END LOOP;
END;
/
こんな感じでよいのでしょうか?
よろしくお願いします。

A 回答 (3件)

>プロシージャとカーソルを使って記述したいんです。



ということでしたらしょうがないですね。
こんな感じでいいのでは?

#あんまりASって見ないですね。ほとんどISかなぁ。
    • good
    • 0
この回答へのお礼

ありがとうございます。
参考にさせていただきます。

お礼日時:2005/02/05 21:56

deleteの方間違えました(^^;;



delete from B where
exists( select * from A where B.キー1 = A.キー1 and B.キー2 = A.キー2 and A.フラグ <> 1);
    • good
    • 0

ストアド不要。

SQLで2行。

inserst into select 項目名1, 項目名2, ・・・ from A where フラグ = 1;

delete from B where フラグ <> 1 and
exists( select * from A where B.キー1 = A.キー1 and B.キー2 = A.キー2 );

この回答への補足

ありがとうございます。
説明不足ですいません。
処理としては、この処理以外にもあるので
プロシージャとカーソルを使って記述したいんです。

補足日時:2005/01/29 19:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!