質問 |
||
| QNo.3953385 | IFで条件を分岐させてのINSERT(ストアド)。 | |
|---|---|---|
| 質問者:ginfix |
SQL Server2005環境です。 ストアドプロシージャを作成しています。 テーブルAを読み込んで、その値を元に、テーブルBに値を INSERTしていくという処理をしたいと考えています。 1.テーブルA.区分1<>0の時、テーブルB.区分は1 2.テーブルA.区分2<>0の時、テーブルB.区分は2 3.テーブルA.区分1<>0 かつ テーブルA.区分2<>0であれば、 テーブルB.区分が1のレコードと、2のレコード、2つ作る 以上のような処理をしたいと考えています。 ストアドはまったく初心者なのですが、分岐については、 DECLARE TEST CURSOR FOR SELECT 区分1, 区分2 FROM テーブルA OPEN TEST FETCH NEXT FROM TEST INTO @KBN1, @KBN2 --条件分岐 IF KBN1<>0 BEGIN @INKBN=1 END IF KBN2<>0 @INKBN=2 END WHILE @@FETCH_STATUS = 0 BEGIN INSERT INTO テーブルB(区分) VALUES(@INKBN) こんな感じになるのか?と思っているのですが、これではケース3の、 区分1、2ともに0ではない場合の処理ができません。 このような場合、どのように記述すれば目的の処理を達成できるのか 教えていただけないでしょうか? よろしくお願いします。 |
|
困り度:
|
||
| 質問投稿日時: 08/04/16 22:43 |
||
回答良回答20pt |
|
| ANo.2 | 次の2つのSQL文を書けばいいのでは? ストアドプロシージャで、ループを書くより効率もいいと思います。 ところでこの例では、テーブルBは区分しか持ってませんが、もちろん他のカラムもあるんですよね。 そのときは。SELECT文で必要な値を取得してくださいね。 INSERT INTO テーブルB(区分) SELECT 1 FROM テーブルA WHERE 区分1 <> 0; INSERT INTO テーブルB(区分) SELECT 2 FROM テーブルA WHERE 区分2 <> 0; |
|---|---|
| 回答者:masa6272 | |
| 種類:回答 どんな人:専門家 自信:自信あり |
|
| 回答日時: 08/04/17 06:54 |
|
| |
| この回答へのお礼 | 回答ありがとうございます。 INSERTを2つ書いておけば良いだけの話だったんですね。 入れる値が違うだけなので、変数のほうが分岐するような イメージがあったので、思い浮かびませんでした。 大変参考になりました。 |
回答良回答10pt |
|
| ANo.1 | DECLARE @KBN1 INT; DECLARE @KBN2 INT; DECLARE TEST CURSOR FOR SELECT 区分1, 区分2 FROM テーブルA; OPEN TEST; FETCH NEXT FROM TEST INTO @KBN1,@KBN2; WHILE @@FETCH_STATUS = 0 BEGIN --条件分岐 IF @KBN1<>0 INSERT INTO テーブルB(区分) VALUES(1); IF @KBN2<>0 INSERT INTO テーブルB(区分) VALUES(2); FETCH NEXT FROM TEST INTO @KBN1,@KBN2; END; |
|---|---|
| 回答者:nora1962 | |
| 種類:補足要求 どんな人:一般人 自信:参考意見 |
|
| 回答日時: 08/04/17 00:26 |
|
| |
| この回答へのお礼 | 大変参考になりました。 ありがとうございました。 |