SSRS 2008是否支持SQL查询中的XML数据类型?

时间:2011-05-24 22:31:21

标签: sql-server xml sql-server-2008 ssrs-2008 reporting-services

我有一个使用XML数据类型的查询。 (您可以看到查询here。)

要明确这意味着我的查询中包含类似的内容:

declare @xmlDoc XML

当我尝试将查询作为BIDS(Visual Studio 2008)中的SQL Server Reporting Services报表的数据集粘贴时,会弹出一个对话框,要求我定义参数:

Define Query Parameters

问题是我没有任何参数!我在查询中定义并使用@xmldoc(它在SSMS中没有问题地运行)。

我在这里输入的内容似乎并不重要。这始终是下一个对话框:

Error Message

“确定”关闭数据集属性,我没有为我设置任何字段。 “取消”让我回到物业再试一次。如果我输入的查询没有XML数据类型,那么它可以正常工作。

我很难过......我只能断定SSRS不支持XML数据类型。

这是真的吗?有工作吗?

1 个答案:

答案 0 :(得分:1)

您应该删除变量@xmldoc并使用

CAST(@DocParam as XML)

在INSERT查询中如下:

; With c as(SELECT CAST(@DocParam as XML) DocParam)
SELECT  TBL.SParam.value('local-name(.)[1]', 'varchar(50)') as Name,
        TBL.SParam.value('(.)[1]', 'varchar(50)') as Value1,
        TBL2.SParam2.value('(.)[1]', 'varchar(50)') as Value2,
        TBL3.SParam3.value('(.)[1]', 'varchar(50)') as Value3,
        TBL4.SParam4.value('(.)[1]', 'varchar(50)') as Value4,
        TBL5.SParam5.value('(.)[1]', 'varchar(50)') as Value5
FROM  C 
CROSS APPLY
 DocParam.nodes('/NewDataSet/Table1[1]/*') AS TBL(SParam)
        left JOIN DocParam.nodes('/NewDataSet/Table1[2]/*') AS TBL2(SParam2) 
            ON TBL.SParam.value('local-name(.)[1]', 'varchar(50)') 
               = TBL2.SParam2.value('local-name(.)[1]', 'varchar(50)')
        left JOIN DocParam.nodes('/NewDataSet/Table1[3]/*') AS TBL3(SParam3) 
            ON TBL.SParam.value('local-name(.)[1]', 'varchar(50)') 
               = TBL2.SParam2.value('local-name(.)[1]', 'varchar(50)')
        left JOIN DocParam.nodes('/NewDataSet/Table1[4]/*') AS TBL4(SParam4) 
            ON TBL.SParam.value('local-name(.)[1]', 'varchar(50)') 
               = TBL2.SParam2.value('local-name(.)[1]', 'varchar(50)')
        left JOIN DocParam.nodes('/NewDataSet/Table1[5]/*') AS TBL5(SParam5) 
            ON TBL.SParam.value('local-name(.)[1]', 'varchar(50)') 
               = TBL2.SParam2.value('local-name(.)[1]', 'varchar(50)')

第二个选项是拥有2个DataSet,首先在查询中设置@xmldoc参数值和第二个使用参数

第三种选择是使用存储过程和

中的所有逻辑