我需要用这样的存储过程填写报告:
CREATE PROCEDURE [dbo].SelectDataToReport
@table_name varchar (25),
@period varchar (25)
AS
BEGIN
DECLARE @mySql nvarchar (MAX)
SET NOCOUNT ON;
SET @mySql = 'SELECT * FROM '+@table_name+' WHERE Period = '+@period+''
EXEC (@mySql)
END
但是报告只接受这样的存储过程:
CREATE PROCEDURE [dbo].SelectCSAT
@Period varchar (25)
AS
BEGIN
SELECT ID, CSAT, Period
FROM CSAT
WHERE Period = @Period
END
所以,我不知道是否有另一种填写报告的方法。问题是数据库表和列将被更改,并且在生成报告时,用户选择他想要的表和句点。
感谢您的帮助!
答案 0 :(得分:0)
你要做的就是做(如果你的列数永远不变,你就不能拥有动态列)
(我一直这样做)
print @mySQL
1)然后取出该声明并将其放在存储过程的顶部 2)评论所有动态代码
3)进入ssrs并创建数据集将起作用。 4)回到你的存储过程并注释掉你的sql语句并恢复你的动态代码(别忘了放回exec(@mySql)
代码示例执行此操作
CREATE PROCEDURE [dbo].SelectDataToReport
@table_name varchar (25),
@period varchar (25)
AS
BEGIN
SELECT ID , CSAT , Period FROM CSAT WHERE Period = '.'
/*DECLARE @mySql nvarchar (MAX)
SET NOCOUNT ON;
SET @mySql = 'SELECT ID , CSAT , Period FROM '+@table_name+' WHERE Period = '+@period+''
EXEC (@mySql)*/
END