生成一个SSRS数据集,该数据集根据创建临时表以存储结果的存储过程中的结果查询数据



我需要构建一个SSRS报告,该报告显示来自SQL Azure表的查询结果。然而,我的其中一个where条件将检查从存储过程(exec团队param1,param2)结果集中提取的数据。更为复杂的是,存储过程创建了一个临时表(tempteam)来存储结果。如何为指定where子句中tempteam内容的所需数据编写查询?

样本代码

exec team 9596, 2
select * from tempteam

Tempteam样本结果

        consid
        9596
        23456
        24354
        20965
        ....
        ....
        .... 

难道不能在查询的WHERE子句中使用"TEMP"表吗?

SELECT * 
FROM SOME_TABLE 
WHERE ID IN (SELECT consid FROM tempteam)

我不认为"TEMP"表实际上是一个普通的SQL临时表,因为它前面没有标签(#tempteam)——它看起来就像是存储在数据库中的一个实际表。

这里有一个可以使用的选项:

EXEC('EXEC team 9596, 2; select * from tempteam')

或参数化:

EXEC('EXEC team ' + @p1 + ',' + @p2 + '; select * from tempteam')

完整复制:

create table test(f1 varchar(256) null)
go
create proc sp_test(@p varchar(256) = 'Hello ')
as
    insert test
    select @p
    return 1
go
declare @p varchar(256) = 'World'
EXEC('EXEC sp_test @p = ''Hello ''; select * from test')
EXEC('EXEC sp_test @p = ' + @p + '; select * from test')
drop proc sp_test
go
drop table test
go

最新更新