単純な繰り返しなしで、値の配列 (おそらくフィールド名の付随配列、またはそれらの両方を含むマトリックス) を INSERT (または UPDATE) する SQL コードをどのように記述すればよいでしょうか?
Lance Roberts
質問する
18460 次
4 に答える
12
リストを xml 文字列として作成し、ストアド プロシージャに渡します。SQL 2005 では、xml を解析して一括挿入を行うための xml 機能が強化されました。
この投稿を確認してください: XML パラメータを使用してリストを SQL Server 2005 に渡す
于 2008-10-03T16:16:21.197 に答える
2
値をリストに連結して 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', ',')
于 2008-10-12T21:16:33.850 に答える
1
値の配列を受け入れるストアド プロシージャの記述について話していることを理解しています
SQL Server 2005 では、XML 変数を使用する必要があります
SQL 2008 は、パラメーターとしてテーブル変数のサポートを追加します
ここでは、テーブルをXMLおよびテーブル変数(SQL Server 2008)としてストアド プロシージャに渡す良い例を見つけることができます。
于 2008-10-03T16:17:06.547 に答える
1
データがすでにデータベースにある場合は、INSERT SELECT
構文を使用できます。INSERT VALUES のものとは少し異なります...
INSERT recipient_table (field1, field2)
SELECT field1_from, field2_from
FROM donor_table
WHERE field1_from = 'condition'
于 2008-10-03T16:26:27.727 に答える