selectステートメントでパラメーターをオプションにするSQLストアドプロシージャを作成するにはどうすればよいですか?
質問する
1072 次
1 に答える
4
これを試してみてください..フィルタリングを制御するSP入力パラメータをオプションにし、デフォルト値をnullにします。各 select ステートメントの Where 句で、次のように述語を記述します。
Create procedure MyProcedure
@columnNameValue [datatype] = null
As
Select [stuff....]
From table
Where ColumnName = Coalesce(@columnNameValue , ColumnName)
このように、パラメーターを含めない場合、またはパラメーターに null 値を渡す場合、select ステートメントは、列の値がそれ自体と等しい場所でフィルター処理を行います (事実上、その列ではフィルター処理をまったく実行しません)。
これに対する唯一のマイナス点は、null のみを明示的にフィルタリングするために意味のある値として null を渡すことができないことです.... (つまり、値が null である行のみを選択します)。採用された場合、そのタイプの要件を実装するには、別のパラメーターを追加する必要があります。( @GetOnlyNulls TinyInt = 0 など)
Create procedure MyProcedure
@columnNameValue [datatype] = null,
@GetOnlyNulls Tinyint = 0
As
Select [stuff....]
From table
Where (ColumnName Is Null And @GetOnlyNulls = 1)
Or ColumnName = Coalesce(@columnNameValue , ColumnName)
于 2012-07-22T19:02:12.977 に答える