QA@IT
この質問・回答は、@ITの旧掲示板からインポートされたものです。

【SQLServer】複数行のInsert

いつも参考にさせていただいております、ありがとうございます。

今まで、SQLServer2000なのですが、複数行をInsertするときには、



  Insert Into テーブル名(項目名1,項目名2) Values(1,a)
  Insert Into テーブル名(項目名1,項目名2) Values(2,b)
   ・・・

と記述していたのですが、SQLServer2008では、



  Insert Into テーブル名(項目名1,項目名2) Values(1,a)
                                                 ,(2,b)
   ・・・

と記述できるようです。

SQLServer2000のマニュアルには複数行のInsertの記述がないため、
上記のような記述はできないのだと思いますが、
他に見やすい記述法がありましたら、お教えください。

(column_list 部分で明示的に項目名を指定しているのですが、
 項目数が多く、Insert文が多くなればなるほど分かりにくくなってしまって・・・)

どうかよろしくお願いいたします。

質問者:あきこ

回答

Insertをストアドプロシージャにしちゃうのはどうでしょうか。
次のようなストアドプロシージャを作っておいて、



create procedure sp_InsertIntoテーブル名
  @項目名1 int
 ,@項目名2 varchar(10)
AS
Insert Into テーブル名(項目名1,項目名2) Values(@項目名1,@項目名2)

次のように実行してあげる。



exec sp_InsertIntoテーブル名 1,'a'
exec sp_InsertIntoテーブル名 2,'b'
   ・・・

一応ぱっと見がスッキリしますし、少なくともcolumn_list部分は省略できます。

投稿者:かめたろ

編集 履歴 (0)

かめたろ様、ご回答、ありがとうございます!

ストアドにしてしまって、PG部分ではループさせるのですね、なるほど!

実は今回は、プログラムではなく、
マスタデータの設定をするために、
テキストファイルにInsert文を記述したものを残しておき、
マスタデータ設定時は、手動でクエリを流す、という、
単純なことだったのですけど、
これを機にモジュール(accessです)に
マスタ設定用モジュールを持たせてもいいな、と、
かめたろ様のご回答をみて感じました。

ありがとうございました!

投稿者:あきこ

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。