0

selectステートメントでパラメーターをオプションにするSQLストアドプロシージャを作成するにはどうすればよいですか?

4

1 に答える 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 に答える