簡體   English   中英

SSMS-存儲過程中的參數數量不同

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM