Wie ein Array von Werten in SQL Server 2005 einfügen?
-
03-07-2019 - |
Frage
Wie kann ich den SQL-Code schreiben, um INSERT (oder UPDATE) ein Array von Werten (mit wahrscheinlich einem Begleiter Array von Feldnamen oder mit einer Matrix mit ihnen beide) ohne einfache Iteration?
Lösung
ich die Liste als XML-String konstruieren und sie mit dem gespeicherten Procs passieren. In SQL 2005 hat es xml-Funktionalitäten erweitert die XML zu analysieren und ein Bulk-Insert tun.
Andere Tipps
Einfache Art und Weise die Werte in eine Liste zu verketten und an die sp passieren.
In der sp verwenden dbo.Split UDF resultset zu konvertieren zurück (Tabelle).
Erstellen Sie diese Funktion:
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
und dann versuchen:
select * from dbo.split('a,b,c,d,e,f,g,h,i,j,k,l', ',')
Wenn Ihre Daten bereits in der Datenbank könnten Sie INSERT SELECT
Syntax. Es ist leicht von INSERT einer VALUES ...
INSERT recipient_table (field1, field2)
SELECT field1_from, field2_from
FROM donor_table
WHERE field1_from = 'condition'
Ich verstehe, dass Sie über das Schreiben von Stored Procedure sprechen zu akzeptieren Array von Werten
Mit SQL Server 2005 müssen Sie XML-Variable verwenden,
SQL 2008 fügt Unterstützung für Tabellenvariablen als Parameter
Hier können Sie gute Beispiele finden Sie eine Tabelle an eine gespeicherte Prozedur als XML und als Tabellenvariable (SQL Server 2008)