4

テーブルを更新するコードを書いています。ユーザーが何をしたいかに応じて、レコードの大きなセットまたは小さなセットのいずれかを更新します。描写要素はグループIDです。

ユーザーは、すべてのレコードのテーブルを更新するか、そのgroupIDを持つレコードのみを更新するかを選択できます。両方のインスタンスで同じストアドプロシージャを使用したいと思いますが、シナリオを区別するためのロジックが少し含まれている可能性があります。(90%同一のコードで2つのストアドプロシージャを記述したくない。)

私はストアドプロシージャの専門家ではなく、groupIDが存在するかどうかに応じて、オプションのパラメーターを渡すことができるかどうか、またはwhere句の一部を動的に生成する方法がわかりません。どんな提案でも大歓迎です。

ありがとう!

4

2 に答える 2

11

これまたは「OR」構文を使用できます

... WHERE GroupID = ISNULL(@GroupdID, GroupID)


... WHERE GroupID = @GroupdID OR @GroupdID IS NULL
于 2009-11-12T16:13:06.303 に答える
2
create procedure MyProc (@GroupID int = null)
as
begin
    update MyTable set ....
    where @GroupID is null or GroupID = @GroupID
end
于 2009-11-12T16:20:14.527 に答える