문제

간단한 반복없이 값 배열 (아마도 필드 이름의 배열 또는 매트릭스와 함께)을 삽입 (또는 업데이트)하기 위해 SQL 코드를 작성하려면 어떻게합니까?

도움이 되었습니까?

해결책

목록을 XML 문자열로 구성하고 저장된 Procs에 전달합니다. 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 recipient_table (field1, field2)
SELECT field1_from, field2_from
FROM donor_table
WHERE field1_from = 'condition'

나는 당신이 값 배열을 수락하기 위해 저장 절차를 작성하는 것에 대해 이야기하고 있음을 이해합니다.

SQL Server 2005를 사용하면 XML 변수를 사용해야합니다.

SQL 2008은 테이블 변수에 대한 지원을 매개 변수로 추가합니다

여기서는 저장된 절차로 테이블을 전달하는 좋은 예를 찾을 수 있습니다. XML 그리고 AS 테이블 변수 (SQL Server 2008)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top