Sql-Server

SQL SSRS 和預設值儲存過程

  • December 22, 2017

我正在創建一個具有相應預設值的儲存過程。它使用下面的預設值 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()))

引用自:https://dba.stackexchange.com/questions/193648