Я пытаюсь написать хранимые процедуры в SQL Server 2008.
Мне нужно получить пользователя (все столбцы в dbo.UserDetails) по UserId (идентификатор пользователя происходит из другой таблицы (dbo.UserSubjects)) и UserName (который приходит из dbo.UserDetails).
У меня всегда будет идентификатор пользователя, но не всегда имя пользователя.
Так что теперь на мой вопрос, как я могу написать хранимые процедуры, которые, если
Имя пользователя пусто, запрос будет искать только по ИД пользователя, а если имя пользователя не пусто
запрос будет искать с UserId и UserName
Пока я написал:
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[GetUserBySubjectID](@ID int = NULL, @Name string)
AS
SET NOCOUNT ON
BEGIN TRY
IF @ID IS NULL
RAISERROR 400001 'User with given Subject ID does not exist'
ELSE
BEGIN
SELECT UD.*
FROM dbo.UserDetails UD , dbo.UserSubjects US
WHERE US.UserID = UD.UserID and US.SubjectID = @ID and UD.UserName = @Name
IF @@ROWCOUNT = 0
RAISERROR 400001 'User with given ID does not exist'
END
RETURN 0
END TRY
BEGIN CATCH
EXEC dbo.GetErrorInfo
RETURN 1
END CATCH