2016-04-04 4 views
1

У меня есть таблица UserAcount в моей базе. На странице Profile пользователи могут обновлять свою информацию. Если заполнен Password, я должен обновить его, иначе я просто обновляю другие поля.Что не так в моем запросе tsql?

я это сделать, но произошла ошибка ниже:

Процедура или функция «EditUserInfo» ожидает, что параметр «@Password», который не прилагается.

ALTER PROCEDURE EditUserInfo 
(
    @FirstName NVARCHAR(100), 
    @LastName NVARCHAR(200), 
    @UserName NVARCHAR(100), 
    @Password BINARY 
) 
AS 
BEGIN 
    IF (@Password IS NULL) 
    BEGIN 
     UPDATE UserAcount 
     SET FirstName = @FirstName, 
      LastName = @LastName 
     WHERE UserName = @UserName 
    END 
    ELSE 
    BEGIN 
     UPDATE UserAcount 
     SET FirstName = @FirstName, 
      LastName = @LastName, 
      [password] = @Password 
     WHERE UserName = @UserName 
    END 
END 

Не могли бы вы мне помочь, пожалуйста?

+1

делает '@Password двоичный = NULL' –

+0

Убедитесь, что вы поставляете правильное значение (тип данных) Пароль при вызове SP, он не будет работать для строки Объявить @pwd AS Binary =«Пароль» –

ответ

2
ALTER PROCEDURE dbo.EditUserInfo 
(
    @FirstName NVARCHAR(100), 
    @LastName NVARCHAR(200), 
    @UserName NVARCHAR(100), 
    @Password BINARY = NULL 
) 
AS BEGIN 

    SET NOCOUNT ON 

    UPDATE dbo.UserAcount 
    SET FirstName = @FirstName, 
     LastName = @LastName, 
     Password = ISNULL(@Password, Password) 
    WHERE UserName = @UserName 

END 
3

Вы можете просто добавить «= NULL» после параметра @password.

alter procedure EditUserInfo 
(@FirstName nvarchar(100), 
@LastName nvarchar(200), 
@UserName nvarchar(100), 
@Password binary = NULL 
) 
as 
begin 
    if (@Password IS NULL) 
     BEGIN 
      UPDATE UserAcount 
      SET 
       FirstName = @FirstName , 
       LastName = @LastName 
      where UserName = @UserName 
     END 
    ELSE 
     BEGIN 
      UPDATE UserAcount 
      SET 
       FirstName = @FirstName , 
       LastName = @LastName, 
       [Password] = @Password 
      where UserName = @UserName 
     END 
end 
Смежные вопросы