Рассмотрим следующую хранимую процедуру
CREATE PROCEDURE AssignCodeToCustomer (@customerId int)
AS
BEGIN
DECLARE @code NVARCHAR(255)
BEGIN TRY
BEGIN TRANSACTION
SELECT @code = (
UPDATE
Codes
SET
CustomerId = @customerId
OUTPUT
INSERTED.Code
FROM (
SELECT TOP 1
Code
FROM
Codes
) AS c
WHERE
c.Code = Codes.Code
-- Other stuff
COMMIT TRANSACTION
END TRY
BEGIN CATCH
BEGIN
ROLLBACK TRANSACTION
EXEC spLogSQLError
END
END CATCH
END
GO
Я получаю сообщение об ошибке «Неверный синтаксис рядом с ключевым словом UPDATE
» в строке 10 (который содержит ключевое слово UPDATE
). Я мог бы также сначала выбрать код, а затем назначить его, но, учитывая параллелизм, мне нужен только один запрос. Запрос работает, если я не пытаюсь установить выходное значение в переменную. Как я могу исправить эту ошибку или я должен использовать другой подход?