2008-10-03 65 views

回答

12

我將列表構造爲一個xml字符串並將其傳遞給存儲的procs。在SQL 2005中,它增強了xml功能來解析xml並執行批量插入。

檢查這個帖子: Passing lists to SQL Server 2005 with XML Parameters

+0

是的,這絕對是最好的選擇之一。我一直在使用這種方法作爲將值列表傳遞給存儲過程的標準方法。 – User 2009-02-06 11:11:35

1

我明白你說的是寫存儲過程來接受值數組

在SQL Server 2005中,你將需要使用XML變量

SQL 2008添加對錶變量的支持作爲參數

在這裏您可以找到將表傳遞給存儲過程的好例子,如XMLtable variable(SQL Server 2008)

1

如果您的數據已經在數據庫中,則可以使用INSERT SELECT語法。它與INSERT VALUES其中一個稍有不同...

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