2016-04-04 10 views
1

Ich habe eine UserAcount Tabelle in meiner Datenbank. Auf der Seite Profile können Benutzer ihre Informationen aktualisieren. Wenn das Password gefüllt wurde, muss ich es aktualisieren, sonst aktualisiere ich einfach andere Felder.Was ist falsch in meiner tsql-Abfrage?

Ich tue dies aber unter Fehler ist aufgetreten:

Prozedur oder Funktion 'EditUserInfo' erwartet Parameter '@Password', die nicht geliefert wurde.

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 

Können Sie mir bitte helfen?

+1

make '@Password binär = NULL' –

+0

Achten Sie auf korrekten Wert (Datentyp) von Passwort liefern, während SP ruft, wird es nicht für String arbeiten Deklarieren @pwd AS Binary = 'Passwort' –

Antwort

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

Sie können einfach "= NULL" nach dem Parameter @password hinzufügen.

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