SQL Server 2012使用xsd的默认值创建Xml



我导入了一个包含258个元素的xsd到我的SQL Server 2012实例中。所有258个元素都必须出现在最后的xml中。我遇到的问题是,其中246个将包含在xsd中标识的默认值,我不知道如何构造SQL来用默认值填充xml。

下面是我创建的一个示例,它使用更小的xsd:

说明了我的问题
DROP XML SCHEMA COLLECTION TestSchema
GO
CREATE XML SCHEMA COLLECTION TestSchema AS 
'<schema xmlns="http://www.w3.org/2001/XMLSchema">
    <element name="document">
        <complexType>
            <sequence>
          <element minOccurs="0" name="field1" type="string" default="1" />
                <element name="field2" type="int" />
            </sequence>
        </complexType>
    </element>
</schema>'
GO
declare @xml xml(TestSchema) = null
declare @reccount table(recordcount int not null)
insert into @reccount select 32
set @xml =
(
    select
        recordcount as field2
    from
        @reccount
    for xml
        PATH('document')
)
select @xml

@xml的值为:

<document>
  <field2>32</field2>
</document>

而我期待

<document>
  <field1>1</field1>
  <field2>32</field2>
</document>

任何想法我可以如何生成field1的默认值?

幸运的是,我在上面的select语句中找到了答案。我只需要添加字段'field1'和一个''作为数据。

set @xml =
(
  select
    '' as field1,
    recordcount as field2
  from
    @reccount
  for xml
    PATH('document')
)

最新更新