#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