2012-11-26 2 views
2

가능한 중복 :역 직렬화 된 XML 데이터

<params> 
    <item> 
     <idtype>1</idtype> 
     <name>dsf2</name> 
     <value>2012-10-05 23:59:59</value>  
    </item> 

    <item> 
     <idtype>2</idtype> 
     <name>msm1</name> 
     <value>999</value>  
    </item> 
</params> 

이 어떻게 내가이에 값 데이터를 저장할 수 있습니다 :이 XML 객체를 가지고
Deserialize XML data object in T-SQL

이 같은 테이블 :
enter image description here

+0

어떤 SQL Server 버전을? –

답변

6
DECLARE @XML XML = '<params> 
    <item> 
     <idtype>1</idtype> 
     <name>dsf2</name> 
     <value>2012-10-05 23:59:59</value>  
    </item> 

    <item> 
     <idtype>2</idtype> 
     <name>msm1</name> 
     <value>999</value>  
    </item> 
</params>' 

INSERT INTO [TableName] ([idtype], [name], [value]) 
SELECT  
    [idtype] = TypeNode.value('(idtype)[1]', 'int'), 
    [name] = TypeNode.value('(name)[1]', 'nvarchar(50)'), 
    [value] = TypeNode.value('(value)[1]', 'nvarchar(50)') 
FROM 
    @XML.nodes('/params/item') AS XTbl(TypeNode) 

BTW : 나는 방법은 다음과 같은 테이블이 정의 된 가정

CREATE TABLE [TableName](
    [idtype] [int] NULL, 
    [name] [nvarchar](50) NULL, 
    [value] [nvarchar](50) NULL 
)