代码之家  ›  专栏  ›  技术社区  ›  philsquared

从表值函数返回显式打开的XML结果集

  •  0
  • philsquared  · 技术社区  · 15 年前

    我尝试从SQL Server(2008)中的表值函数返回Open XML格式的行。 当我选择带有“for xml explicit”的结果时,偶尔会出现错误,这意味着结果的顺序不能保证与我插入到TVF输出中的顺序相同。

    所以我的第一个问题是:是这样吗?

    如果是这样,我的下一个问题是:有什么办法可以解决这个问题吗?到目前为止,我能想到的最好的方法是在TVF输出中包含一个ID列,然后在调用它时只选择其他列,并按ID排序。这里的问题是,这意味着我每次都必须指定所有列,而不是只选择*,这在这种情况下真的很尴尬(特别是因为我有42个这样的电视fs-所有列都不同)。

    TVF和显式开放XML是不是混合了(这真的很遗憾,因为它们看起来非常适合),还是我遗漏了一些有用的东西?

    1 回复  |  直到 14 年前
        1
  •  1
  •   philsquared    15 年前

    我找到了一个折衷办法。这仍然有点尴尬,但没有指定所有列那么糟糕。

    可以将打开的XML格式的列标记为“隐藏”:

    
    [Tagname!Tagnumber!!hide]
    

    如果我在输出中添加了一个标识列,并在表单后面加上一个名称,我可以在外部选择中按该列排序,但是如果我使用“xml explicit”,它就不会参与XML输出。

    我还是宁愿“刚刚生效”的命令,但如果不可能的话,我想我应该为感兴趣的人分享这个发现。