Sql server 向sp_xml_preparedocument传递值时出错
声明@xmlSql server 向sp_xml_preparedocument传递值时出错,sql-server,xml,Sql Server,Xml,声明@xml SET @xml = N'"<?xml version=\"1.0\" encoding=\"utf-16\"?><NominalIds><Id>6416</Id><Id>9</Id><Id>6405</Id><Id>6400</Id><Id>6404</Id><Id>6407</Id><Id>0<
SET @xml = N'"<?xml version=\"1.0\" encoding=\"utf-16\"?><NominalIds><Id>6416</Id><Id>9</Id><Id>6405</Id><Id>6400</Id><Id>6404</Id><Id>6407</Id><Id>0</Id></NominalIds>"';
DECLARE @idoc INT
EXEC sp_xml_preparedocument @idoc OUTPUT, @xml
SET@xml=N''6416964056400640464070';
声明@idoc INT
EXEC sp_xml_preparedocument@idoc OUTPUT,@xml
错误是
XML解析:第1行,字符7,text/xmldecl不在输入的开头
DECLARE@xml;
SET@xml=N'6416964056400640464070';
声明@idoc INT
EXEC sp_xml_preparedocument@idoc OUTPUT,@xml
声明@xml;
SET@xml=N'6416964056400640464070';
声明@idoc INT
EXEC sp_xml_preparedocument@idoc OUTPUT,@xml
您的xml字符串格式不正确
删除开头和结尾的双引号,删除\
之前的“
DECLARE@xmlxml=N'6416964056400640464070';
声明@idoc INT
EXEC sp_xml_preparedocument@idoc OUTPUT,@xml
---做事
EXEC sp_xml_removedocument@idoc
您的xml字符串格式不正确
删除开头和结尾的双引号,删除\
之前的“
DECLARE@xmlxml=N'6416964056400640464070';
声明@idoc INT
EXEC sp_xml_preparedocument@idoc OUTPUT,@xml
---做事
EXEC sp_xml_removedocument@idoc
您已经被告知,“
和\”
是错误的
但无论如何,你应该走另一条路
来自OPENXML的
以及用于准备和删除文档的相应SP已过时,不应再使用(存在极少数例外情况)。而是使用适当的方法
对于您的示例,这将是一种方法:
DECLARE @xml XML =
N'<?xml version="1.0" encoding="utf-16"?><NominalIds><Id>6416</Id><Id>9</Id><Id>6405</Id><Id>6400</Id><Id>6404</Id><Id>6407</Id><Id>0</Id></NominalIds>';
SELECT id.value(N'(text())[1]',N'int')
FROM @xml.nodes(N'/NominalIds/Id') AS A(id)
您已经被告知,
“
和\”
是错误的
但无论如何,你应该走另一条路
来自OPENXML的
以及用于准备和删除文档的相应SP已过时,不应再使用(存在极少数例外情况)。而是使用适当的方法
对于您的示例,这将是一种方法:
DECLARE @xml XML =
N'<?xml version="1.0" encoding="utf-16"?><NominalIds><Id>6416</Id><Id>9</Id><Id>6405</Id><Id>6400</Id><Id>6404</Id><Id>6407</Id><Id>0</Id></NominalIds>';
SELECT id.value(N'(text())[1]',N'int')
FROM @xml.nodes(N'/NominalIds/Id') AS A(id)
我发现了一些与此相关的问题,但没有一个建议对我有效,这就是我提出它的原因。那是什么
“
开始和结束时在那里做什么?摆脱它。T-SQL中的字符串仅用单引号括起来。它返回XML解析:第1行,字符15,应为字符串文本。但是如果我用这个来纠正xml字符串-'6416964056400640464070',那么它就可以工作了。我找到了一些与此相关的查询,但没有一个建议对我有效,这就是我提出它的原因。那是什么“
开始和结束时在那里做什么?摆脱它。T-SQL中的字符串仅用单引号括起来。它返回XML解析:第1行,字符15,应为字符串文本。但如果我通过以下方式更正xml字符串-'6416964056400640464070',那么它就可以工作了。对我来说是有效的。感谢来自OPENXML
以及相应的SPs来准备和删除已过时的文档…感谢@Shnugo,我正在使用为我工作的OPENXML
和xquery
。感谢来自OPENXML的,
以及相应的SPs来准备和删除已过时的文档…感谢@Shnugo,我正在使用来自openxml的openxml
和xquery
以及相应的SPs来准备和删除过期的文档…来自openxml的以及相应的SPs来准备和删除过期的文档。。。
DECLARE @xml XML =
N'<?xml version="1.0" encoding="utf-16"?><NominalIds><Id>6416</Id><Id>9</Id><Id>6405</Id><Id>6400</Id><Id>6404</Id><Id>6407</Id><Id>0</Id></NominalIds>';
SELECT id.value(N'(text())[1]',N'int')
FROM @xml.nodes(N'/NominalIds/Id') AS A(id)
6416
9
6405
6400
6404
6407
0