SQL-запрос в хранимой процедуре; создайте запрос со специальным параметром condition

#sql #sql-server #stored-procedures

#sql #sql-сервер #хранимые процедуры

Вопрос:

Предположим, у меня есть таблицы Users, Roles и UserRoles (ассоциация). Затем я хочу создать хранимую процедуру с параметром userid , чтобы вернуть все роли этого определенного пользователя. Однако, если UserId равно 1 (специальный идентификатор), должны быть возвращены все роли.

Мой запрос в SP должен быть таким без специального условия:

 SELECT r.* 
FROM Roles 
INNER JOIN UserRoles ur ON r.Id = ur.RoleId 
WHERE ur.UserId = @userId;
  

Как бы мне изменить этот запрос, чтобы удовлетворить то, что я хотел? Или это возможно только для одного запроса? Я бы не хотел использовать IF ..ELSE и использовать 2 запроса.

Любые комментарии приветствуются.

Ответ №1:

Привет, это вернет все роли пользователя, когда @userId = 1

 SELECT r.* 
FROM Roles 
INNER JOIN UserRoles ur
  ON r.Id = ur.RoleId
WHERE ur.UserId = @userId 
  OR @userId = 1