Как использовать предложение вывода инструкции INSERT для получения значения идентификатора?



если у меня есть инструкция insert, например:



INSERT INTO MyTable
(
Name,
Address,
PhoneNo
)
VALUES
(
'Yatrix',
'1234 Address Stuff',
'1112223333'
)


как мне установить @var INT к значению идентификатора новой строки (называется Id) С помощью предложения OUTPUT? Я видел образцы сдачи INSERTED.Name например, в табличные переменные, но я не могу получить его в переменную без таблицы.



Я пробовал OUPUT INSERTED.Id AS @var,SET @var = INSERTED.Id, но ни один из них не работал.

517   1  

1 ответ:

вы можете либо иметь недавно вставленный идентификатор вывода на консоль SSMS следующим образом:

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

вы можете использовать это также, например, C#, когда вам нужно вернуть идентификатор в вызывающее приложение - просто выполните SQL-запрос с .ExecuteScalar() (вместо .ExecuteNonQuery()), чтобы прочитать полученное ID обратно.

или если вам нужно захватить вставленной ID внутри T-SQL (например, для последующей дальнейшей обработки), вам нужно создать таблицу переменная:

DECLARE @OutputTbl TABLE (ID INT)

INSERT INTO MyTable(Name, Address, PhoneNo)
OUTPUT INSERTED.ID INTO @OutputTbl(ID)
VALUES ('Yatrix', '1234 Address Stuff', '1112223333')

таким образом, вы можете поместить несколько значений в @OutputTbl и сделать дальнейшую обработку на тех. Вы также можете использовать" обычную " временную таблицу (#temp) или даже "реальная" постоянная таблица в качестве вашей "выходной цели" здесь.

Comments

    Ничего не найдено.