0

我有一个要序列化为 SQL Server 表的哈希集。当序列化的哈希集看起来像这样......

<InstallerContactIds>
   <int>153771</int> 
   <int>209572</int> 
</InstallerContactIds>

我正在使用以下内容将 XML 插入表中...

INSERT INTO dbo.cv_AssessorActionPlanInstallers
SELECT @AssessorActionPlanId, InstallerId
From OPENXML (@XmlDocumentHandle, 'AssessorActionPlan/InstallerContactIds', 2) 
With
(
    InstallerId int 'int'           
)

但是,我只将第一个 id 插入到表中。在这种情况下是否可以插入所有 id?

我正在使用 SQL Server 2005

4

1 回答 1

0

您没有指定使用的 SQL 版本,但如果您使用的是 2005 或更新版本,则可以使用新的XML 数据类型

declare @xml xml
select @xml = '
<InstallerContactIds>
   <int>153771</int> 
   <int>209572</int> 
</InstallerContactIds>'

select
    x.i.value('.', 'int')
from
    @xml.nodes('/InstallerContactIds/int') as x(i)

如果您在使用 OpenXML 时遇到困难,那么这样做应该可以工作:

INSERT INTO dbo.cv_AssessorActionPlanInstallers
SELECT @AssessorActionPlanId, InstallerId
From OPENXML (@XmlDocumentHandle, 'AssessorActionPlan/InstallerContactIds/int', 2) 
With
(
    InstallerId int '.'
)
于 2009-08-27T20:34:02.367 回答