CREATE PROCEDURE sp_updates
(@fname VARCHAR(100) = NULL,
@mname VARCHAR(100) = NULL,
@lname VARCHAR(100) = NULL,
@sex CHAR = NULL,
@BirthDate DATE = NULL,
@phonenumber VARCHAR(12) = NULL,
@MailId VARCHAR(150) = NULL,
@City VARCHAR(100) = NULL,
@State VARCHAR(100) = NULL,
@Zip VARCHAR(10) = NULL,
@Line VARCHAR(300) = NULL,
@PersonID INT)
AS
BEGIN
UPDATE PERSON
SET fname = ISNULL(@fname, fname),
mname = ISNULL(@mname, mname),
lname = ISNULL(@lname, lname),
sex = ISNULL(@sex, sex),
BirthDate = ISNULL(@BirthDate, BirthDate)
WHERE PersonID = @PersonID
UPDATE TOP(1) PHONENO
SET phonenumber = ISNULL(@phonenumber, phonenumber)
WHERE pno_PersonID = @PersonID
UPDATE TOP(1) EMAIL
SET MailId = ISNULL(@MailId, MailId)
WHERE mail_PersonID = @PersonID
UPDATE TOP(1) ADDRESS
SET City = ISNULL(@City, City),
State = ISNULL(@State, State),
Zip = ISNULL(@Zip, Zip)
WHERE add_PersonID = @PersonID
UPDATE TOP(1) LINE
SET Line = ISNULL(@Line, Line)
WHERE l_PersonID = @PersonID
END
Calling it:
EXEC sp_updates @fname = gagan, @mname = NULL , @lname = NULL,
@sex=NULL,@BirthDate='1992-02-19',@phonenumber='1234-234-
345',@MailId='updates@gmail.com',@City='updated',@State='updated',
@Zip='updated',@Line='updated',@PersonID=1;
SELECT TOP(1) * FROM EMAIL WHERE mail_PersonID=1;
I want to update only one TUPLE (in SQL Server) and then I want to select the same tuple I updated. From BELOW picture, I want to update only first phone number 165-398-9385 to '123-567-5678' for person id = 1. and then i want to get only that phone number which i recently updated for person id =1.
I tried to use TOP(1)
but it's not working. It returns a result different from the original tuple I updated.
SELECT TOP(1) *
FROM EMAIL
WHERE mail_PersonID = 1;
returns another tuple which was not updated.