我们当前的销售点系统在嵌套事务中执行了太多查询,从而留下了重复或部分数据。我将整个事情更改为单个存储过程,其中所有销售项目数据都以 XML 形式传入,在临时表中迭代,并保存到数据库,然后提交。但是,SQL 拒绝 xml 中的特殊字符。
例如:
<?xml version="1.0" encoding="utf-16"?>
<list>
<item>
<objectid>bd99fcb6-3031-48b7-9a71-5f8cefe0a614</objectid>
<amount>50.00</amount>
<fee>1.50</fee>
<waivedfee>0.00</waivedfee>
<tax>0.00</tax>
<name>TEST & TEST PERSON</name>
<payeeid>197</payeeid>
<accountnumber>5398520352</accountnumber>
<checknumber />
<comedreceiptnumber />
<isexpedited>0</isexpedited>
<echeckrefnumber />
</item>
</list>
失败。它告诉我&
所在的位置有一个非法角色。我不知道为什么。它被&
正确逃脱了.我在网上找不到任何解决方案,任何地方。到处都有人告诉我用&
替换和替换 - 这就是我正在做的事情!
使用 XML PATH('')
,它将为您编码特殊字符。
SELECT 'TEST & TEST PERSON' FOR XML PATH('')
我想通了。UTF-16 是正确的。那个 Xml 很好。还有最后一块xml,分类账,它只是普通的字符串,没有编码,也没有转义的特殊字符。一旦我纠正了一切,这一切都奏效了。
感谢您的帮助!