SQL Server XML 数据类型和 QUOTED_IDENTIFIER
Posted
技术标签:
【中文标题】SQL Server XML 数据类型和 QUOTED_IDENTIFIER【英文标题】:SQL Server XML Data Type and QUOTED_IDENTIFIER 【发布时间】:2011-03-19 06:08:20 【问题描述】:谁能提供这方面的见解?
我开发了一个使用 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
我假设它与引用的数据类型('VARCHAR(15)')或 xml 查询路径元素('/records/record')有关。
感谢您提供的任何见解。
【问题讨论】:
【参考方案1】:一个非常简单的测试用例
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)
给予
消息 1934,第 16 级,状态 1,第 8 行 SELECT 失败,因为以下原因 SET 选项的设置不正确: 'QUOTED_IDENTIFIER'。验证 SET 选项是正确的使用 索引视图和/或索引 计算列和/或查询 通知和/或 xml 数据类型 方法。
这是通过here记录的
执行 XQuery 和 XML 数据 修改语句要求 连接选项 QUOTED_IDENTIFIER 开启。
我还没有看到为什么这是 xQuery 的要求。
【讨论】:
非常感谢,马丁。 Msg 1934 正是我在我的场景中得到的消息。我会查看文档。令人欣慰的是,这确实是预期的行为。再次感谢。以上是关于SQL Server XML 数据类型和 QUOTED_IDENTIFIER的主要内容,如果未能解决你的问题,请参考以下文章