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的要求的原因.