2014-05-20 148 views
1

我有以下查詢下面,我想要使用輸入參數篩選結果。參數來篩選查詢結果

我想要顯示所有,或特定的服務器名稱及其相應的信息。

這是我有:

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

+0

添加一些SSRS參數設置的屏幕截圖,它是默認值和它具有的值 –

+0

根據我如何設置參數,sql方面看起來是否正確? @PreetSangha – choloboy

+0

您需要在使用本地變量之前分配一個值,即DECLARE @p_ServerName varchar(10)='ServerFilter''。 「CCS_Win32_Volume」和「[dbo]」[CCS_V_SERVER_INSTANCE_DETAILS]'表之間沒有連接條件嗎? – StuartLC

回答

2

如果你想在management studio中測試你的查詢,你需要給你的局部變量賦值。目前它是NULL,即使該列中有NULL值,也不能使用equals運算符來匹配NULL,因此您將得到零結果。

當您在SSRS中使用該查詢時,您將需要刪除局部變量聲明,因爲它們不是必需的。 SSRS將有效地創建具有參數值的局部變量。在SSRS中使用的查詢中聲明變量將會給你一個錯誤或者沒有結果。

簡而言之:在SSMS中測試時,爲本地變量賦值。在SSRS中使用查詢時刪除本地變量聲明。