我导入了一个包含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')
)