我有一个 Microsoft SQL Server 查询,它建立一个临时表,然后使用“for XML Explicit”语法输出 XML,如下所示:
select * from @XMLOutput order by
[UaarSale!1!NodeOrder!hide], [UaarSale!1!NestingId!hide], Tag
for XML Explicit
这都包含在存储过程中。我们只需运行传入我们的 Id 的存储过程来获取 XML 文档。
查询本身运行良好,并且已经运行了好几年。但是,我们现在发现 XML 输出根据谁调用存储过程而发生变化的情况。我们的输出包含大量的货币数据类型。在某些情况下,货币类型中不包含尾随零。在其他情况下,类型始终显示 4 个有效数字。
在我的测试环境中,我在 SQL Server 2008 R2 数据库上复制了它。
例如,我的主程序(与旧的 SQLOLEDB 提供程序连接)获取不包含尾随零的 XML。
<node value="12.34" />
但是,当我从 SQL Server Management Studio 运行相同的存储过程时,我总是得到 4 个位置。
<node value="12.3400" />
我还有一个客户端使用相同的 SQLOLEDB 提供程序与我的应用程序连接,该提供程序正在获得额外的零。
我处理 XML 文件以生成报告。那些并不期待额外的零。由于我在两个不同的程序之间看到不同的输出,我猜测(希望)有一个数据库选项、连接字符串选项或额外的命令参数来控制货币类型如何转换为 XML 输出的字符串。
这样的事情是否存在,如果存在,我该如何设置该值以保持输出一致?最好没有额外的零。