这是我的样本xml,
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfClientContactDetail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ClientContactDetail>
<PersonName>adsf asfd</PersonName>
<EmailAddress>test@gmail.com</EmailAddress>
<PhoneNumber>9876543210</PhoneNumber>
</ClientContactDetail>
</ArrayOfClientContactDetail>
这是我的sql代码:
DECLARE @idoc IN
EXEC sp_xml_preparedocument @idoc OUTPUT
,@ClientDetail;
SELECT *
FROM OPENXML(@idoc, 'ArrayOfClientContactDetail/ClientContactDetail', 2) WITH (
PersonName VARCHAR(100) '@PersonName'
,EmailAddress VARCHAR(100) '@EmailAddress'
,PhoneNumber VARCHAR(15) '@PhoneNumber'
,CompanyID INT '@CompanyID'
);
答案 0 :(得分:2)
您正在ColPattern中指定您想要属性而不是节点值。
将@idoc
更改为select C.X.value('(PersonName/text())[1]', 'varchar(100)') as PersonName,
C.X.value('(EmailAddress/text())[1]', 'varchar(100)') as EmailAddress,
C.X.value('(PhoneNumber/text())[1]', 'varchar(100)') as PhoneNumber,
C.X.value('(CompanyID/text())[1]', 'varchar(100)') as CompanyID
from @ClientDetail.nodes('ArrayOfClientContactDetail/ClientContactDetail') as C(X);
。
完成Celluloid::Future
后,请不要忘记致电future_object.value
。
如果您使用的是SQL Server 2005或更高版本,则可以使用XML数据类型。
{{1}}