Вернуть информацию о пользователе после проверки пользователя в хранимой процедуре? - PullRequest
0 голосов
/ 05 мая 2020

У меня есть хранимая процедура для проверки пользователя. После проверки прямо сейчас я возвращаю истину, если пользователь проверен, но как я могу вернуть все данные этого пользователя вместо истины?

IF (@Flag='Authenticate')
BEGIN
IF EXISTS(SELECT UserID  FROM UserInformation WITH(NOLOCK)WHERE UserName=@UserName and Password=@UserPassword )
 BEGIN
  INSERT INTO UserLoginHistory(UserId,LastLoggedIn)
  SELECT @Userid,GETDATE()
  select 'true' as [Output] 
 END
END

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Попробуйте что-то вроде запроса ниже - вы можете объявить больше переменных по мере необходимости и сохранить всю эту информацию в переменных, которые вы хотите вернуть.

IF (@Flag='Authenticate')
BEGIN

Declare @UserID varchar(50) = null

SELECT @UserID = UserID  FROM UserInformation WITH(NOLOCK) WHERE UserName=@UserName and Password=@UserPassword )
 IF (@UserID is not NULL)
 BEGIN

  INSERT INTO UserLoginHistory(UserId,LastLoggedIn)
  SELECT @Userid,GETDATE()

  SELECT @Userid 
 END
END
0 голосов
/ 05 мая 2020

Вам не нужно отдельное «если», чтобы проверить, существует ли уже пользователь. Вы можете поместить все это в один запрос:

IF (@Flag = 'Authenticate')
BEGIN
    INSERT INTO UserLoginHistory(UserId, LastLoggedIn)
        SELECT v.Userid, GETDATE()
        FROM (VALUES (@UserId)) v(UserId)
        WHERE EXISTS (SELECT 1
                      FROM UserInformation ui
                      WHERE ui.UserName = @UserName AND ui.Password = @UserPassword
                     );

     SELECT ui.*
     FROM UserInformation ui
     WHERE ui.UserName = @UserName AND ui.Password = @UserPassword;
END;

Кроме того, меня беспокоит @UserPassword. Надеюсь, это значение зашифровано! У вас не должно быть паролей в открытом виде где-либо в приложении, у которого есть пользователь, кроме вас, - даже для демонстрации или курса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...