XML應該格式化爲正常的XML文檔。然後,您只需使用參數類型XML將其傳遞給存儲過程即可。
下面是如何進行插入的示例。在這種情況下,@p_AdditionalContactInfo是XML,它的形式如下:
<entities>
<entity>
<firstName>Joey</firstName>
...
</entity>
.. more entity records
</entities>
這裏的T-SQL例如:
DECLARE @l_index int
-- parse the records from the XML
EXECUTE sp_xml_preparedocument @l_index OUTPUT, @p_AdditionalContactInfo
INSERT INTO @l_AdditionalContactInfoTbl
(ContactInfoID
, FirstName
, LastName
, ContactTypeID
, Title
, Email
, AddressLine1
, AddressLine2
, City
, State
, Zip
, MobilePhone
, BusinessPhone
, UpdateDateTime)
SELECT ContactInfoID
, FirstName
, LastName
, ContactTypeID
, Title
, Email
, AddressLine1
, AddressLine2
, City
, State
, Zip
, MobilePhone
, BusinessPhone
, UpdateDateTime
FROM OPENXML (@l_index, 'entities/entity', 1)
WITH ( ContactInfoID int 'id'
, FirstName varchar(50) 'firstName'
, LastName varchar(50) 'lastName'
, ContactTypeID int 'contactTypeId'
, Title varchar(20) 'title'
, Email varchar(100) 'email'
, AddressLine1 varchar(100) 'addressLine1'
, AddressLine2 varchar(100) 'addressLine2'
, City varchar(50) 'city'
, State varchar(2) 'state'
, Zip varchar(5) 'zip'
, MobilePhone varchar(12) 'mobilePhone'
, BusinessPhone varchar(12) 'businessPhone'
, UpdateDateTime datetime 'updateDateTime'
)
EXECUTE sp_xml_removedocument @l_index
總的來說,我發現XML到數據庫的轉換最好是很尷尬。它們通常是必需的,但如果您可以利用傳統技術(如分隔文件),則應該更容易實施和支持。 – 2010-04-28 13:44:47