用于过滤查询结果的参数

时间:2014-05-20 02:40:52

标签: sql sql-server reporting-services

我在下面有以下查询,我正在尝试使用输入参数过滤结果。

我正在尝试显示全部或特定服务器名称及其相应信息。

这就是我所拥有的:

DECLARE @p_ServerName varchar(10)
DECLARE @p_Env nvarchar(10)
DECLARE @p_EnvCat nvarchar(10)

SELECT     BlockSize, BootVolume, Compressed, SystemName, Label, Caption, PageFilePresent,
           [dbo].[CCS_DIGITAL_STORAGE_CONVERTER]('B', 'GB', Capacity) AS Capacity,
           [dbo].[CCS_DIGITAL_STORAGE_CONVERTER]('B', 'GB', FreeSpace) AS [Free Space], 
           [dbo].[CCS_DIGITAL_STORAGE_CONVERTER]('B', 'GB', Capacity - FreeSpace) AS [Used Space],
           100 * FreeSpace / Capacity AS [Free Space %],

           [CLE_ENV_SHORT], [CLE_ENV_CAT_SHORT]

FROM       CCS_Win32_Volume, [dbo].[CCS_V_SERVER_INSTANCE_DETAILS]

WHERE SystemName = @p_ServerName

在ssrs中预览显示没有结果。谁能帮我这个?我假设WHERE子句有问题?也许我设置参数的方式:S

1 个答案:

答案 0 :(得分:2)

如果您尝试在管理工作室中测试查询,则需要为本地变量分配值。它当前是NULL,即使该列中有NULL值,也不能使用equals运算符来匹配NULL,因此您将得到零结果。

在SSRS中使用该查询时,您将需要删除不需要的局部变量声明。 SSRS将使用给定参数的值有效地创建局部变量。声明SSRS中使用的查询中的变量会导致错误或没有结果。

简而言之:在SSMS中测试时,为本地变量赋值。在SSRS中使用查询时删除局部变量声明。