SQL Server XML数据类型和QUOTED_IDENTIFIER

Ric*_*nam 13 xml sql-server quoted-identifier

谁能提供这方面的见解?

我使用XML数据类型开发了一个导入过程.通过导入sProc将数据插入到表中之后,我运行另一个过程来使用导入的表更新另一个表.

如果使用SET QUOTED_IDENTIFIER OFF创建更新过程,则会引发异常.我想知道为什么会这样.

这是代码:

DECLARE @xmlRecords XML
SET     @xmlRecords = (SELECT importedXML FROM importTable WHERE importId = @lastImportId)

UPDATE  o
SET     o.ReferralCode = import.refCode
FROM    (
            SELECT  records.record.value('(@orderId)[1]', 'INT') AS orderId, 
                    records.record.value('(@refCode)[1]', 'VARCHAR(15)') AS refCode
            FROM    @xmlRecords.nodes('/records/record') records(record)
            ) import 
            INNER JOIN tblOrder o ON import.OrderId = o.orderId
Run Code Online (Sandbox Code Playgroud)

我假设它与引用的数据类型('VARCHAR(15)')或xml查询路径元素('/ records/record')有关.

感谢您提供的任何见解.

Mar*_*ith 18

一个非常简单的测试用例

set quoted_identifier off


DECLARE @xmlRecords XML
SET     @xmlRecords = '<records><record orderId="1" refCode="1234"></record></records>'


SELECT  records.record.value('(@orderId)[1]', 'INT') AS orderId
FROM    @xmlRecords.nodes('/records/record') records(record)
Run Code Online (Sandbox Code Playgroud)

消息1934,级别16,状态1,行8 SELECT失败,因为以下SET选项具有不正确的设置:'QUOTED_IDENTIFIER'.验证SET选项是否正确,以便与计算列和/或查询通知和/或xml数据类型方法的索引视图和/或索引一起使用.

这是通过这里记录的

执行XQuery和XML数据修改语句需要连接选项QUOTED_IDENTIFIER为ON.

我没有看到为什么这是xQuery的要求的原因.