Только так:
ALTER PROCEDURE dbo.sp_test AS
SELECT xmlstring FROM database WHERE (id = 1)
Вам не нужна переменная и вам не нужен TOP, если только id не уникален (в этом случае вы можете рассмотреть что-то, кроме TOP, например MIN (), MAX () или какой-то другой фильтр). критерии, так как вы не можете предсказать, какая запись TOP вернется)