- PR -

【SQLServer】複数行のInsert

1
投稿者投稿内容
あきこ
会議室デビュー日: 2008/03/07
投稿数: 12
投稿日時: 2008-08-20 13:04
いつも参考にさせていただいております、ありがとうございます。

今まで、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文が多くなればなるほど分かりにくくなってしまって・・・)

どうかよろしくお願いいたします。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2008-08-20 13:50
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部分は省略できます。
あきこ
会議室デビュー日: 2008/03/07
投稿数: 12
投稿日時: 2008-08-20 14:45
かめたろ様、ご回答、ありがとうございます!

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

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

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

スキルアップ/キャリアアップ(JOB@IT)