Существует причудливый синтаксис обновления, который позволит вам присвоить значение переменной одновременно с выполнением обновления, но я не собираюсь показывать его вам, поскольку оно недокументировано, не поддерживается, и я могу 'Гарантируйте, что это продолжит работать в будущих версиях SQL Server.Вот метод, который я бы порекомендовал (предполагая, что Id - это PK или хотя бы уникальный):
DECLARE
@Id INT,
@uri VARCHAR(2048),
@linkTo VARCHAR(2048);
SELECT TOP 1 @Id = Id, @uri = uri, @linkTo = linkTo
FROM dbo.Adverts
WHERE adRegion = @region
ORDER BY NEWID();
UPDATE dbo.Adverts
SET adShown = adShown + 1
WHERE Id = @Id;
SELECT Id = @Id, uri = @uri, linkTo = @linkTo;