使用XML PATH的空表

这时,我有一个空的新表,我想使用FOR XML PATH来构建xml返回。在我的C#代码中,我遇到了与缺少根元素有关的错误。

  

即使选择中没有内容,我如何返回XML?

SELECT 
[CommitteeSurveryid],[GroupId],[SurveryTitle],[SurveryDate],[FileManagerid]
FROM [CommitteSurvery] as cs
WHERE (cs.GroupId = 620)
FOR XML PATH('Items'),ROOT('CommitteeSurveryItem');

[

使用XML PATH的空表

h5531856138 回答:使用XML PATH的空表

如果您总是想返回根节点 CommitteeSurveryItem,即使表为空或没有与 where 子句匹配的行,您也必须将代码重新排列为 XML 子查询,如下所示:

SELECT
  (
    SELECT
      [CommitteeSurveryid],[GroupId],[SurveryTitle],[SurveryDate],[FileManagerid]
    FROM [CommitteSurvery] as cs
    WHERE (cs.GroupId = 620)
    FOR XML PATH('Items'),TYPE
  )
FOR XML PATH('CommitteeSurveryItem');

哪个返回...

XML_F52E2B61-18A1-11d1-B105-00805F49916B

插入一些匹配的行数据后,您将看到如预期的 Items 子节点...

insert dbo.CommitteSurvery (CommitteeSurveryid,SurveryTitle,FileManagerid,GroupId) values
  (1,'Foo','2021-01-01',1,620),(2,'Bar','2021-01-02',620);
<CommitteeSurveryItem>
    <Items>
        <CommitteeSurveryid>1</CommitteeSurveryid>
        <GroupId>620</GroupId>
        <SurveryTitle>Foo</SurveryTitle>
        <SurveryDate>2021-01-01</SurveryDate>
        <FileManagerid>1</FileManagerid>
    </Items>
    <Items>
        <CommitteeSurveryid>2</CommitteeSurveryid>
        <GroupId>620</GroupId>
        <SurveryTitle>Bar</SurveryTitle>
        <SurveryDate>2021-01-02</SurveryDate>
        <FileManagerid>1</FileManagerid>
    </Items>
</CommitteeSurveryItem>
本文链接:https://www.f2er.com/3159015.html

大家都在问