Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL Server XML数据类型和带引号的\u标识符_Sql Server_Xml_Quoted Identifier - Fatal编程技术网

Sql server SQL Server XML数据类型和带引号的\u标识符

Sql server SQL Server XML数据类型和带引号的\u标识符,sql-server,xml,quoted-identifier,Sql Server,Xml,Quoted Identifier,有人能提供这方面的见解吗 我使用XML数据类型开发了一个导入过程。在导入存储过程将数据插入到表中之后,我运行另一个过程,用导入的表更新另一个表 如果在禁用SET QUOTED_IDENTIFIER的情况下创建更新过程,则会引发异常。我想知道为什么会这样 代码如下: DECLARE @xmlRecords XML SET @xmlRecords = (SELECT importedXML FROM importTable WHERE importId = @lastImportId) U

有人能提供这方面的见解吗

我使用XML数据类型开发了一个导入过程。在导入存储过程将数据插入到表中之后,我运行另一个过程,用导入的表更新另一个表

如果在禁用SET QUOTED_IDENTIFIER的情况下创建更新过程,则会引发异常。我想知道为什么会这样

代码如下:

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)
set quoted\u标识符关闭
声明@xmlRecords XML
设置@xmlRecords=''
选择records.record.value('(@orderId)[1]',INT')作为orderId
从@xmlRecords.nodes('/records/record')记录(record)
给予

Msg 1934,第16级,州1,第8行 由于以下原因,选择失败: 设置选项的设置不正确: “引用的标识符”。验证该集合 选项适合与一起使用 上的索引视图和/或索引 计算列和/或查询 通知和/或xml数据类型 方法

这是顺便记录的

执行XQuery和XML数据 修改声明要求 连接选项 您的标识符不能打开


不过,我还不知道为什么xQuery需要这样做。

非常感谢,Martin。Msg 1934正是我在剧本中得到的信息。我会查看文档。令人欣慰的是,这确实是预期的行为。再次感谢。