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参数值,第二个使用查询参数 第三种选择是将存储过程与所有内部逻辑一起使用     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...