См. Ссылку, указанную Гораном для обработки необязательных значений - в вашем случае вам нужно передать NULL хранимому процессу, если опция не выбрана пользователем. Если вы хотите продолжать использовать ноль (или другое значение), чтобы указать неприменимость параметра, чем вы можете изменить запрос, например
WHERE
(COALESCE(@Categ, 0) = 0 OR Categ = @Categ) AND
(COALESCE(@WorkPlace, 0) = 0 OR WorkPlace = @WorkPlace) AND
(COALESCE(@WorkPlace1, 0) = 0 OR WorkPlace1 = @WorkPlace1) AND
(COALESCE(@AsignedAs, 0) = 0 OR AsignedAs= @AsignedAs)
Надеюсь, вы поняли основную идею!