1

我创建了一个 SQL Server 2000 存储过程来使用FOR XML EXPLICIT. 这本身工作正常,但是我无法弄清楚如何在输出参数中获取存储过程返回的 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

有什么想法我哪里出错了吗?

4

1 回答 1

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 上是不可能的。

于 2012-09-26T13:19:49.107 回答