Если вы пытаетесь передать постоянное значение, используйте sp_executesql
.Ваш запрос на самом деле не кажется очень полезным.Это выглядит как разумное приближение:
DECLARE @LastUpdated datetime;
SET @Update = N'
SELECT TOP 1 @LastUpdated as LastUpdated
FROM Purchase
WHERE ID = 15';
EXEC sp_executesql @Update,
N'@LastUpdated datetime',
@LastUpdated=@LastUpdated;
РЕДАКТИРОВАТЬ:
Для обновления данных вам необходимо использовать UPDATE
.Но вам не нужен динамический SQL:
UPDATE Purchase
SET LastUpdated = @LastUpdated
WHERE ID = 15;
Если ID
не уникален, и вы хотите ограничить его одной (произвольной) строкой:
UPDATE p
SET LastUpdated = @LastUpdated
FROM (SELECT TOP (1)
FROM Purchase
) p
WHERE ID = 15;
Вы должны использоватьORDER BY
с TOP
, чтобы вы могли контролировать, на какую строку вы воздействуете.