0

ストアドプロシージャに入れるパラメータの数に問題があります。四半期データ(パラメーター形式= 2012Q1、2012Q2など)を使用してレポートを自動化しています。
ユーザーの最初のパラメーターがQ1、Q2、またはQ3で始まる場合、データは3年しかないため、ユーザーの最初のパラメーターが2012Q1、2012Q2、または2012Q3の場合、パラメーターは2014Q4で終了します。パラメーターの数2012Q1-2012Q4から12個のパラメーター、2012Q2-2014Q4から11個のパラメーター、および2012Q3-2014Q4から10個のパラメーターが必要なため、異なります。

ユーザーの最初のパラメーターがどのようなものであるかに基づいて、宣言されたパラメーターの数を変更することは可能ですか?これに取り組む良い方法さえありますか?

4

2 に答える 2

3

いいえ、これは不可能ですが、パラメータのデフォルト値を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#のオプションの名前付き引数とSQLServerストアドプロシージャとの比較

これを行う代わりに、開始日と終了日を使用しないのはなぜですか、または複数年から四半期をアドホックに選択できますか?

于 2013-02-18T15:47:19.483 に答える
1

2つのパラメーターを設定するだけで、非常に単純化できると思います。1つ目は検索期間の開始を指定し、2つ目は終了を指定します。これらが日付、年月、または期間の名前であるかどうかは、あなたが理解できるものです、

于 2013-02-18T15:50:27.853 に答える