使用 FOR XML AUTO 设置表变量输出的格式
使用 SQL Server 2008。
我有一个包含单列和单行的表变量。
如果我这样做:
Declare @testsToRun Table ( testsId BigInt )
Insert Into @testsToRun
Select testsId From tests Where testsId = 10
Select Top 1 * From @testsToRun
For Xml Auto , Type , Root('testMessage')
我得到的 XML 看起来像这样:
<testMessage>
<_x0040_testsToRun testsId="10" />
</testMessage>
当我真正想要的是:
<testMessage>
<testsToRun testsId="10" />
</testMessage>
如果行源是一个表,那似乎工作正常。当它是表变量时,我得到一个我不想要的子元素标签,我想要 testsToRun
而不是 _x0040_testsToRun
。
如何修改 FOR XML 语句/子句以获得正确的输出?
谢谢。
Using SQL Server 2008.
I have a table variable with a single column and single row.
If I do this:
Declare @testsToRun Table ( testsId BigInt )
Insert Into @testsToRun
Select testsId From tests Where testsId = 10
Select Top 1 * From @testsToRun
For Xml Auto , Type , Root('testMessage')
I get XML that looks like this:
<testMessage>
<_x0040_testsToRun testsId="10" />
</testMessage>
When what I actually want is:
<testMessage>
<testsToRun testsId="10" />
</testMessage>
If the row source is a table, that seems to work fine. When it is a table variable I get a child element label I don't want, I want testsToRun
and not _x0040_testsToRun
.
How can I rework my FOR XML statement/clause to give me proper output?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
尝试这样做 - 使用
FOR XML PATH
并使用您使用的列别名定义输出结构:给我:
Try this instead - use
FOR XML PATH
and define your output structure with the column alias(ses) you use:Gives me:
尝试在临时表上使用别名:
Try using an alias on the temp table:
x0040 值是临时表的内部名称。当您从常规表中进行选择时,您将获得正常的输出(因此...选项可能是创建一个临时表,选择您想要的内容并将其从数据库中删除)。
The x0040 value is the internal name for the temporary table. You will get normal output when you select from a regular table (so.... the option could be to create a temp table, select what you want and drop it from the db).