报告服务存储过程

时间:2010-12-10 09:54:56

标签: reporting-services

我一直在研究一个脚本,它将交换两个ID作为主键:

CREATE PROCEDURE dbo.ID 
    @OldName NVARCHAR(128), 
    @NewName NVARCHAR(128)
AS
    DECLARE @NewId INT, @OldId INT

    CREATE TABLE TmpTable (ID INT, Name NVARCHAR(128)) 

    INSERT INTO TmpTable (Name,ID) 
    VALUES (@NewName, (SELECT ID FROM Table1 WHERE [Name] = @NewName));

    INSERT INTO TmpTable (Name,ID)
    VALUES(@OldName, (SELECT ID FROM Table1 WHERE [Name] = @OldName))

    UPDATE Table1 
    SET ID = (SELECT MAX(ID) + 1000 FROM Table1) 
    WHERE [NAME] = @NewName

    UPDATE Table1 
    SET ID = (SELECT MAX(ID) + 2000 FROM Table1) 
    WHERE [NAME] = @OldName

    UPDATE Table1 
    SET ID = (SELECT ID FROM TmpTable WHERE Name = @NewName)
    WHERE [Name] = @OldName

    UPDATE Table1 
    SET ID = (SELECT ID FROM TmpTable WHERE Name = @OldName) 
    WHERE [Name] = @NewName

    DROP TABLE TmpTable
go

我现在要做的是在报告服务中将其作为报告运行,其中将从查询Table1表的下拉框中选择NewNAme和OldNAme。目前,当我尝试导入此代码时,它会询问值。

  1. 如何将存储过程导入报表。
  2. 如何获得一个下拉框来查询列[名称]。

2 个答案:

答案 0 :(得分:1)

当您向报表数据源添加存储过程时,ssrs会自动将其参数添加到report ass report参数。

如果要通过下拉列表指定参数,则必须编写类似Web应用程序的应用程序并将此参数传递给报表。

答案 1 :(得分:0)

我一直在使用报告向导,使用文本导入存储过程,如

exec ID 1,2

这得到了tablix的基本返回值。但是在您的情况下不适用,因为没有选择返回。

向导创建报告后,右键单击数据集并选择存储过程。单击“刷新字段”,将自动添加参数。

要使报表参数成为下拉列表,您需要为它们提供数据源。我添加了一个基于select语句或另一个存储过程的新数据集来选择我需要的值。

右键单击参数并选择参数属性 您现在可以跳转到可用值选项卡并选择"从查询中获取值" 选择提供下拉值的数据集。

还有其他选项,例如允许空值等,可以微调下拉的工作方式。

非常好奇为什么您需要一个运行您显示的SQL的报表而不返回任何值。似乎有更好的方法可以让用户有能力运行这样的东西。