سؤال

وكيف أكتب رمز SQL لإدراج (أو UPDATE) مجموعة من القيم (ربما مع مجموعة المصاحبة للfieldnames، أو مع مصفوفة عنهما) دون التكرار البسيط؟

هل كانت مفيدة؟

المحلول

وI بناء قائمة كسلسلة أكس وتمريرها إلى procs المخزنة. في SQL 2005، وقد عزز ذلك وظائف XML لتحليل أكس والقيام إدراج مجمعة.

وتحقق هذا المنصب: <وأ href = "http://weblogs.asp.net/jgalloway/archive/2007/02/16/passing-lists-to-sql-server-2005-with-xml-parameters.aspx" يختلط = "نوفولو noreferrer "> تمرير القوائم إلى SQL Server 2005 مع XML معلمات

نصائح أخرى

وطريقة بسيطة لسلسلة القيم في قائمة وتمريرها إلى يرة سورية.

في لس استخدام dbo.Split الجبهة الديمقراطية لتحويل العودة إلى resultset و(الجدول).

إنشاء هذه الوظيفة:

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 recipient_table (field1, field2)
SELECT field1_from, field2_from
FROM donor_table
WHERE field1_from = 'condition'

وأنا أفهم أن كنت تتحدث عن كتابة الإجراء المخزن لقبول مجموعة من القيم

ومع SQL Server 2005 سوف تحتاج إلى استخدام متغير XML

وSQL 2008 يضيف دعما لمتغير الجدول كمعلمات

وهنا يمكنك العثور على أمثلة جيدة لتمرير الجدول إلى إجراء مخزن كما XML و كما الجدول متغير (SQL سيرفر 2008)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top