WHEREで動的な動作が必要だと思います 動的にビルドする必要のない句 あなたのWHERE 条項。
単一のパラメーターで、ISNULLを使用できます (またはCOALESCE )このように:
SELECT * FROM Table WHERE ID = ISNULL(@id, ID)
NULLを許可します すべてに一致するパラメータ。より長く、より明確なものを好む人もいます:
SELECT * FROM Table WHERE (@id IS NULL) OR (ID = @id)