Если вы работаете с уровнем изоляции транзакции по умолчанию, вам также нужно знать, что:
IF EXISTS(
SELECT
1
FROM
Users u
WHERE
u.UPIN = @AttendingDoctorID) --<-- Query 1
BEGIN
SELECT
u.UserId, 1
FROM
Users u WITH(nolock)
WHERE
u.UPIN = @AttendingDoctorID --<-- Query 2
END ELSE BEGIN
SELECT
u.UserId,
1
FROM
Users u (nolock)
WHERE
u.FirstName = @AttendingDoctorFirstName AND
u.LastName = @AttendingDoctorLastName
END
Другая транзакция может обновлять Users
между выполнением запроса 1 и выполнением запроса 2, и поэтому вы можете получить пустой набор результатов из запроса 2. Ваша вторая версия выполняет все как один запрос, поэтому не будет иметь этой проблемы (но другие указали на другие различия между запросами)