[英]SSMS - Varying number of parameters in a stored procedure
我在存儲過程中放入的參數數量存在問題。 我正在使用季度數據自動執行報告(參數格式= 2012Q1、2012Q2,依此類推)。
如果用戶的第一個參數以Q1,Q2或Q3開頭,則只有3年的數據,因此,如果用戶的第一個參數是2012Q1、2012Q2或2012Q3,則參數將以2014Q4結尾。...參數的數量會有所不同,因為它需要使用2012Q1-2012Q4的12個參數,2012Q2-2014Q4的11個參數和2012Q3-2014Q4的10個參數。
是否可以根據用戶的第一個參數的狀態更改聲明的參數數量??? 有沒有解決這個問題的好方法?
否,這是不可能的,但是您可以使參數的默認值為NULL,現在不需要傳入值。
例
create procedure prTest
@i int = null, @i2 int = null
as
select @i,@i2
go
exec prTest 1 --just pass 1 parameter, 2nd is default
go
exec prTest -- leave all as default
go
exec prTest @i2 = 5 --to pass in a param if it is not 1st, use names
go
exec prTest null,5 --same as above
另請參見: C#中的可選和命名參數與SQL Server存儲過程的比較
除了這樣做,您為什么不只使用開始日期和結束日期,或者他們可以臨時從多年中選擇季度?
我認為您只需兩個參數即可極大地簡化事情。 第一個指定搜索周期的開始,第二個指定結束時間。 無論是日期,年份,月份或期間名稱,您都可以確定,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.