質問

単純な反復なしで、値の配列(おそらくフィールド名の付随配列、またはそれらの両方を持つ行列)をINSERT(またはUPDATE)するSQLコードを書くにはどうすればよいですか?

役に立ちましたか?

解決

リストをxml文字列として作成し、ストアドプロシージャに渡します。 SQL 2005では、xmlを解析して一括挿入を行うために、xml機能が強化されました。

この投稿を確認してください: XMLパラメータを使用してSQL Server 2005にリストを渡す

他のヒント

値をリストに連結してspに渡す簡単な方法。

spでdbo.Split udfを使用して、結果セット(テーブル)に戻します。

この関数を作成します:

CREATE FUNCTION dbo.Split(@String nvarchar(4000), @Delimiter char(1))
returns @Results TABLE (Items nvarchar(4000))
as
begin
declare @index int
declare @slice nvarchar(4000)

select @index = 1
if @String is null return

while @index != 0

begin
select @index = charindex(@Delimiter,@String)
if @index !=0
select @slice = left(@String,@index - 1)
else
select @slice = @String

insert into @Results(Items) values(@slice)
select @String = right(@String,len(@String) - @index)
if len(@String) = 0 break
end return
end

そして試してください:

select * from dbo.split('a,b,c,d,e,f,g,h,i,j,k,l', ',')

データがすでにデータベースにある場合、 INSERT SELECT 構文を使用できます。 INSERT VALUES oneとは少し異なります...

INSERT recipient_table (field1, field2)
SELECT field1_from, field2_from
FROM donor_table
WHERE field1_from = 'condition'

値の配列を受け入れるストアドプロシージャの作成について話していることを理解しています

SQL Server 2005では、XML変数を使用する必要があります

SQL 2008は、テーブル変数をパラメーターとしてサポートします

ここで、 XMLとして、ストアドプロシージャにテーブルを渡す良い例を見つけることができます。 およびテーブル変数(SQL Server 2008)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top