1

個別にすべてオプションであるパラメーターを持つストアド プロシージャを作成することは可能ですが、パラメーターの少なくとも 1 つを指定する必要がありますか?

たとえば、レコードを更新するプロシージャがある場合、レコード ID を渡してから、更新する列を少なくとも 1 つ渡す必要があります。この手順では、追加のパラメーター/列が少なくとも 1 つ指定されていることを確認する必要があります。

4

3 に答える 3

2

最初のアクションとして if ステートメントを入れます。

IF @param1 is null and @param2 isnul and @param3 is null
Begin
--steps tpo raise an error or exit the proc
End
于 2012-07-12T03:24:19.833 に答える
1

これは、ストアドプロシージャではなく、選択したプログラミング言語で行います。なんで?これは、TSQLがあまり得意ではないタイプのロジックチェックです。これをチェックするための構文は「厄介」で、遅くなります。

また、ストアドプロシージャがもたらす最大のパフォーマンス上の利点は、コンパイル済みSQLの実行です。この場合、SQLを動的に構築する必要があるため、その利点は失われます。したがって、なぜそれをストアドプロシージャとして使用するのでしょうか。

于 2012-07-12T03:28:26.550 に答える
0

where句で次を使用します

where
(isnull(@param1,0)=0 or id=@param1)
and 
(isnull(@param2,'')='' or name=@param2)
于 2012-07-12T06:00:47.030 に答える