Мне нужно сделать этот запрос без курсора, но как?
Мой босс сказал не использовать курсоры, почему бы и нет? Как это можно написать без такового?
Я создал таблицу с именем tbl_StudentCoverage, в которой есть SSN varchar (9) и fklogin int.
Я также создал таблицу Mstr_tbl_login, в которой intID int является внешним ключом для fklogin в tbl_StudentCoverage и strFour varchar (4).
Я хочу обновить strFour в Mstr_tbl_login последними четырьмя SSN в tbl_StudentCoverage, сопоставляя intID с fklogin.
Я думаю, что мой босс не знает SQL или он не понимаетчто я должен сделать. Я считаю себя опытным человеком SQL.
USE mstr_Database
GO
DECLARE @fkLogin int
DECLARE @ssn varchar(9)
DECLARE NW4 CURSOR FOR
SELECT fkLogin, SSN FROM mstr.tbl_StudentCoverage
OPEN NW4
FETCH NEXT FROM NW4
INTO @fkLogin, @ssn
WHILE (@@FETCH_STATUS = 0)
BEGIN
IF (SELECT intID FROM mstr.mstr_tbl_Login WHERE intID = @fkLogin) = @fkLogin
BEGIN
UPDATE mstr.mstr_tbl_Login SET strFour = right(@ssn,4) WHERE intID = @fkLogin
END
FETCH NEXT FROM NW4
INTO @fkLogin, @ssn
END
print 'done'
CLOSE NW4
DEALLOCATE NW4
GO
Нет ошибок, это работает отлично. Просто мой босс не хочет курсоров.