gpt4 book ai didi

sql-server - SQL Server XML 数据类型和 QUOTED_IDENTIFIER

转载 作者:数据小太阳 更新时间:2023-10-29 01:40:34 27 4
gpt4 key购买 nike

任何人都可以对此提供见解吗?

我开发了一个使用 XML 数据类型的导入过程。在通过 import 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')有关。

感谢您提供的任何见解。

最佳答案

一个非常简单的测试用例

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)

给予

Msg 1934, Level 16, State 1, Line 8 SELECT failed because the following SET options have incorrect settings: 'QUOTED_IDENTIFIER'. Verify that SET options are correct for use with indexed views and/or indexes on computed columns and/or query notifications and/or xml data type methods.

这被记录在案 here

Executing XQuery and XML data modification statements requires that the connection option QUOTED_IDENTIFIER be ON.

虽然我还没有看到为什么这是 xQuery 的要求。

关于sql-server - SQL Server XML 数据类型和 QUOTED_IDENTIFIER,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3304018/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com