我创建了一个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
我出错的任何想法?
答案 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上尝试做的事情是不可能的。