Должен объявить скалярную переменную '@ID' с OUTPUT INTO - PullRequest
1 голос
/ 06 ноября 2019

Я получаю эту ошибку, но я думал, что уже объявил об этом. Может кто-нибудь сказать мне, где я иду не так?

DECLARE @ID TABLE(OrderID INT)

INSERT INTO [dbo].[Order](UserID, To_Adress, OrderDate, TravelTime, ItemCount, Status, TotalPrice) 
OUTPUT INSERTED.OrderID INTO @ID
VALUES (1, 'BIKINI BOTTOM', '20191030 15:00:00', '20191030 15:35:00', 1, 'InTheMaking', 7.50) 

INSERT INTO [dbo].[Order_Product](OrderID, ProductID) VALUES (@ID, 12)

Справочная информация: Таким образом, в основном я пытался получить автоматически увеличенный идентификатор, который я только что вставил, и попытался вместо этого реализовать метод DECLARE OUTPUTSCOPE_IDENTITY() -дальше от комментария от BugFinder. Могу ли я получить ID только что вставленных данных?

1 Ответ

4 голосов
/ 06 ноября 2019

Да, используйте предложение FROM, поскольку значение находится в таблице:

DECLARE @IDS TABLE (OrderID INT);

INSERT INTO [dbo].[Order](UserID, To_Adress, OrderDate, TravelTime, ItemCount, Status, TotalPrice) 
    OUTPUT INSERTED.OrderID INTO @IDS
    VALUES (1, 'BIKINI BOTTOM', '20191030 15:00:00', '20191030 15:35:00', 1, 'InTheMaking', 7.50);

INSERT INTO [dbo].[Order_Product](OrderID, ProductID) 
    SELECT i.OrderID, 12
    FROM @IDS i;

Я изменил имя на @IDS, чтобы было ясно, что в нем может быть более одной строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...