我有一个SQL
stored procedure
. 我需要xml
从数据库生成一个。在我的存储过程中,我收集了所有信息,然后我的计划是根据需要生成 XML 文件(请参阅代码)。
我需要报告的所有交易都加载到变量中@transactionXml
。它是数据类型xml
,可以变得非常大。
SET @xmlOut += '<export_datuma>' + cast(CAST(getdate() as date) as nvarchar(100)) + '</export_datuma>'
SET @xmlOut += '<export_szla_db>' + @noOfResults + '</export_szla_db>'
SET @xmlOut += '<kezdo_ido>' + cast(@fromDate as nvarchar(max)) + '</kezdo_ido>'
SET @xmlOut += '<zaro_ido>' + cast(@toDate as nvarchar(max)) + '</zaro_ido>'
SET @xmlOut += '<kezdo_szla_szam>' + @minInvoiceNo + '</kezdo_szla_szam>'
SET @xmlOut += '<zaro_szla_szam>' + @maxInvoiceNo + '</zaro_szla_szam>'
SET @xmlOut += cast(@transactionXml as nvarchar(max))
SET @xmlOut += '</szamlak>'
SELECT @xmlOut
当我尝试将数据类型转换为nvarchar(max)
(如在代码部分中)时,字符串不完整并且缺少一些信息。似乎字符串在 x 符号后被切断。
有没有办法将@transactionXml
变量完全转换为文本,以便我可以在我的@xmlOut
语句中使用它?
您不应该在字符串级别创建 XML!试试这个:
SELECT CAST(getdate() as date) AS export_datuma
,@noOfResults AS export_szla_db
,@fromDate AS kezdo_ido
,@toDate AS zaro_ido
,@minInvoiceNo AS kezdo_szla_szam
,@maxInvoiceNo AS zaro_szla_szam
,@transactionXml AS [*] --This is the pre-created XML which should be fine
FOR XML PATH('szamlak');
预先创建的 XML 必须没问题,否则您无法将其存储为 XML 本机类型。
在字符串级别创建 XML 会产生各种危险的副作用。想象一下你的一个变量中有一个被禁止的字符......
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句