Возвращение значения из оператора INSERT в SQL Server 2008 - PullRequest
2 голосов
/ 19 октября 2011

База данных: SQL Server 2008

Есть ли способ заставить оператор вставки возвращать значение в SQL Server,

Есть похожий вопрос в

Возвращает значение из оператора вставки , который говорит об ORACLE.

Я не очень много работаю с базами данных и мало знаю об ORACLE / SQL Server, так что извините, чтобы спросить это снова.

Для простоты приведу небольшой пример:

Таблица EmpDetails имеет EmpiD и EmpName. Значение EmpID автоматически генерируется базой данных.

INSERT INTO EMPDETAILS VALUES("John")

Теперь я хочу получить значение EmpID, связанное с Джоном

Мне не нужна хранимая процедура, я хочу только оператор SQL.

1 Ответ

8 голосов
/ 19 октября 2011

Да - вы можете использовать малоизвестное и малоиспользуемое предложение OUTPUT в своем выражении INSERT

INSERT INTO dbo.YourTable(col1, col2, col3, ...., ColN)
OUTPUT Inserted.Col1, Inserted.Col5, Inserted.ColN
VALUES(val1, val2, val3, ....., valN)

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

Как показывают документы MSDN, вы также можете отправить значения OUTPUT, например, в табличную переменную или временную таблицу для дальнейшего использования, если вам нужно.

Чтобы ответить на ваш обновленный вопрос, используйте это:

INSERT INTO dbo.EMPDETAILS(EmpName)
OUTPUT Inserted.EmpID
VALUES("John")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...