2011-06-14 147 views
1

如何将XML保存到由SQL存储过程生成的变量或表中?将XML结果保存到SQL中的变量或表中

这里是我的示例:

DECLARE @ReportResultXml TABLE(RXml XML)  
DECLARE @ResultXml XML = NULL 

INSERT @ReportResultXml EXEC (@Script + ' FOR XML RAW, ROOT, XMLSCHEMA, ELEMENTS') 
SELECT @ResultXml = RXml FROM @ReportResultXml 
EXEC Repor.ProcInsert 1, @ResultXml 

SELECT @ResultXml 

@Script变量包含此SQL查询:

DECLARE @PeriodID INT 
SET @PeriodID = 12 
SELECT TOP 10 PeriodID, Name 
FROM Agent.Points 
WHERE PeriodID = @PeriodID 

该声明将产生以下错误:

The FOR XML clause is not allowed in a INSERT statement.

回答

0

这可以帮助你找到你的解决方案:

declare @script nvarchar(max) 
set @script = 'select 1 as a, 2 as b for xml raw' 

declare @ReportResultXml table (RXml XML) 
declare @ResultXml xml 

declare @sql nvarchar(max) 

set @sql = 'set @ResultXml = (' + @script + ')' 
execute sp_ExecuteSQL @sql, N'@ResultXml xml output', @ResultXml output 

insert into @ReportResultXml select @ResultXml 

select * from @ReportResultXml 
相关问题