微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决SSRS 2008是否在SQL查询中支持XML数据类型?

| 我有一个使用“ 0”数据类型的查询。 (您可以在此处查看查询。) 为了清楚起见,这意味着我的查询中包含以下内容
declare @xmlDoc XML
当我尝试将查询粘贴为BIDS(Visual Studio 2008)中的sql Server Reporting Services报表的数据集时,会弹出一个对话框,要求我定义参数: 问题是我没有任何参数!我在查询中定义并使用@xmldoc(它在SSMS中运行没有问题)。 我在这里输入的内容似乎并不重要。这始终是下一个对话框: \“ OK \”关闭数据集属性,并且没有为我设置任何字段。 \“取消\”将我带回到属性,然后重试。如果我在查询中没有“ 0”数据类型,那么它可以正常工作。 我很困惑...我只能得出结论,SSRS不支持XML数据类型。 真的吗?有没有解决的办法?     

解决方法

您应该删除变量@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)\')
        left JOIN DocParam.nodes(\'/NewDataSet/Table1[4]/*\') AS TBL4(SParam4) 
            ON TBL.SParam.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)\')
第二个选择是拥有2个数据集,第一个设置@xmldoc参数值,第二个使用查询参数 第三种选择是将存储过程与所有内部逻辑一起使用     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。