【发布时间】:2021-12-30 11:16:21
【问题描述】:
这是主要程序:
ALTER PROCEDURE [dbo].[GHA_SAP_GetResponseXML]
@xmlINVDetails ntext
AS
BEGIN
DECLARE @XMLData XML, @DatVal nvarchar(max),
@authenticationCode varchar(500), @messageId varchar(50)
SELECT @DatVal = @xmlINVDetails
SELECT @XMLData = SUBSTRING(@DatVal, CHARINDEX('>', @DatVal) + 1, LEN(@DatVal))
SELECT
@authenticationCode = Node.Data.value('(authenticationCode)[1]', 'VARCHAR(MAX)'),
@messageId = Node.Data.value('(messageId)[1]', 'VARCHAR(MAX)')
FROM
@XMLData.nodes('/BASSAPRequest') Node(Data)
DECLARE @intPointer int
DECLARE @tblFSU Table
(
[Month] varchar(5),
[Year] INT,
InvType varchar(10)
)
EXEC SP_XML_PREPAREDOCUMENT @intPointer output, @xmlINVDetails
INSERT INTO @tblFSU ([Month], [Year], InvType)
SELECT [Month], [Year], InvType
FROM OPENXML (@intPointer, 'BASSAPRequest', 2)
WITH (
[Month] varchar(5),
[Year] INT,
InvType varchar(10)
)
--select * from @tblFSU
IF OBJECT_ID('tempdb..#temp') IS NOT NULL
DROP TABLE #FSU_FOR_XML
DECLARE @month int, @year int,@invoType varchar(10),
@FSUCount bigint, @Airline_code varchar(2)
SELECT @month = [Month] FROM @tblFSU
SELECT @year = [Year] FROM @tblFSU
SELECT @invoType = invType FROM @tblFSU
END
当我执行这个过程时,我得到这个错误:
GHA_SAP_GetResponseXML
'<?xml version="1.0" encoding="UTF-8"?>
<BASSAPRequest>
<InvType>036</InvType>
<Year>2021</Year>
<Month>03</Month>
</BASSAPRequest>'
我收到以下错误:
XML 解析错误 0xc00ce56f 发生在第 1 行,靠近 XML 文本“”
消息 6602,级别 16,状态 2,过程 sp_xml_preparedocument,第 27 行
错误描述为“不支持从当前编码切换到指定编码。”。消息 8179,级别 16,状态 5,过程 GHA_SAP_GetResponseXML,第 51 行
找不到句柄为 0 的准备好的语句。
【问题讨论】:
-
你为什么在这里使用
SP_XML_PREPAREDOCUMENT而不仅仅是XQuery? -
如果您使用
nvarchar(max)输入参数,那么为什么它仍然有encoding="UTF-8"?好像你需要修复你的 XML。 -
我需要做什么。请帮帮我。
-
您最好解释一下您实际上想要达到的目标。示例数据和预期结果将帮助我们为您提供帮助。
-
我已编辑请检查