Sql-Server
SQL SSRS 和預設值儲存過程
我正在創建一個具有相應預設值的儲存過程。它使用下面的預設值 2018。
create procedure rpt.FinanceReport @AccountYearParam int = 2018 as select * from FinanceTable where AccountYear = @AccountYearParam
如何將預設值傳遞到 SSRS 報告中?所以當使用者沒有選擇參數時,它會顯示2018。
“使用 Null 值”不起作用,因為 Null 將產生一無所有。如果使用者未選擇任何參數,我希望 SSRS 報告顯示 2018 年的所有值。
如果您不介意將查詢建構為表達式(將查詢類型設置為文本並使用表達式按鈕定義查詢),您可以執行以下操作:
="EXEC MYPROC @PARAM=" & iif(isnothing(Parameters!ReportParameter1.Value), "DEFAULT", Parameters!ReportParameter1.Value)
這只是說如果參數為 Nothing (null),則使用關鍵字 DEFAULT,否則使用參數值。
您可以使用 isnull() 處理儲存過程中的空值,如下所示:
create procedure rpt.FinanceReport @AccountYearParam int as set @AccountYearParam = isnull(@AccountYearParam, 2018) -- select * from FinanceTable where AccountYear = @AccountYearParam
如果您想變得非常花哨,可以使用它(它將返回目前年份):
create procedure rpt.FinanceReport @AccountYearParam int as set @AccountYearParam = isnull(@AccountYearParam, datepart(year, getdate())) -- select * from FinanceTable where AccountYear = @AccountYearParam
您也可以在 where 子句中處理它,儘管此方法可能要慢得多:
create procedure rpt.FinanceReport @AccountYearParam int as -- select * from FinanceTable where AccountYear = isnull(@AccountYearParam, datepart(year, getdate()))