Sql server 能否在SSRS数据集中使用T-SQL语句?

Sql server 能否在SSRS数据集中使用T-SQL语句?,sql-server,tsql,reporting-services,ssrs-2012,Sql Server,Tsql,Reporting Services,Ssrs 2012,我有一个脚本,它在CTE上迭代,并为每一行执行一个自定义的sp_executesql查询。我需要在SSRS报告中使用生成的表,但数据集似乎不允许declare、cursor和exec语句 有什么方法可以使T-SQL在SSRS中工作吗?T-SQL在SSRS数据集中工作良好。我经常声明变量,使用临时表和其他T-SQL语句,过去也使用过cursor和exec语句 问题可能出在您返回的内容上。整个SQL语句的查询应该只返回一个具有稳定结构的表。例如,每次游标迭代返回一行将不起作用。将它们放在临时表中,然

我有一个脚本,它在CTE上迭代,并为每一行执行一个自定义的sp_executesql查询。我需要在SSRS报告中使用生成的表,但数据集似乎不允许declare、cursor和exec语句


有什么方法可以使T-SQL在SSRS中工作吗?

T-SQL在SSRS数据集中工作良好。我经常声明变量,使用临时表和其他T-SQL语句,过去也使用过cursor和exec语句

问题可能出在您返回的内容上。整个SQL语句的查询应该只返回一个具有稳定结构的表。例如,每次游标迭代返回一行将不起作用。将它们放在临时表中,然后在游标执行后立即返回所有。对于不同的执行,也不能返回不同的列类型或名称


另外,不要声明用作参数的变量。

是的,我几乎总是在数据集中使用整个脚本。只有查询设计器不支持它们

只需在SSMS或其他文件中编写脚本,然后将其粘贴到查询编辑器中。记住注释掉将作为参数从报告中传入的任何变量声明

如果双击数据集名称并确保查询类型为文本,则可以直接在中复制脚本

注:

不要声明任何需要作为参数从报表中传入的变量。我通常只是在数据集查询中注释掉这些。 e、 g.如果您要从报表参数中传入一个雇员ID,那么您的数据集将不需要该声明,所以看起来像这样

从myTable中选择*,其中EmpID=@EmpID

显然,当您在SSMS中测试脚本时,您需要这个声明

确保对@Variables的所有引用都使用相同的大小写。当涉及变量名时,SSRS区分大小写

只有脚本输出的第一个结果集才会被“看到”我的SSR,因此请确保只有一个SELECT语句输出最终数据


你犯了什么错误?我的脚本声明了一组变量,创建了一个临时表,在游标上迭代,为每一行插入一个查询结果到临时表中,然后显示并删除该表。