从存储过程输出参数中的“FOR XML EXPLICIT”返回结果

时间:2012-09-26 13:13:06

标签: xml stored-procedures sql-server-2000

我创建了一个SQL Server 2000存储过程,使用FOR XML EXPLICIT返回一些XML数据。这本身工作正常,但是我无法弄清楚如何在输出参数中获取存储过程返回的XML结果(因为我想从另一个SP调用此结果)。

我尝试了以下选项,但似乎无法让它发挥作用!

CREATE PROCEDURE [dbo].[MyProc]
    @user_index INT,
    @xml_data   VARCHAR(8000) OUTPUT
AS
BEGIN
    SELECT  @xml_data = 
             1 AS Tag
            ,0 AS Parent
            ...
            ...

    UNION ALL

    SELECT   2 AS Tag
            ,1 AS Parent
            ...
            ...
    FOR XML EXPLICIT
END

我出错的任何想法?

1 个答案:

答案 0 :(得分:3)

您的FOR XML查询需要是子查询,如下所示:

CREATE PROCEDURE [dbo].[MyProc]     
  @user_index INT,     
  @xml_data   VARCHAR(8000) OUTPUT 
AS 
BEGIN     
  SELECT  @xml_data =               
  (
    SELECT 
       1 AS Tag             
      ,0 AS Parent             
...             
...      
    UNION ALL      
    SELECT   
       2 AS Tag             
      ,1 AS Parent             
...             
...     FOR XML EXPLICIT 
  )
END 

勘误: 我刚刚注意到您对SQL Server 2000的引用.SQL Server 2000中没有XML数据类型,因此这不起作用。如果我没记错的话,该版本中的FOR XML只能将结果流式传输到TDS流。您无法捕获数据库过程中的输出。

因此,您在SQL Server 2000上尝试做的事情是不可能的。