从SQL Server 2008中的INSERT语句返回值

Suj*_*osh 2 database sql-server sql-server-2008

数据库:SQL Server 2008

有没有办法让insert语句在SQL Server中返回一个值,

有类似的问题

从insert语句返回一个值,该语句讨论ORACLE.

我没有太多的数据库工作,也没有太多了解ORACLE/SQL Server,所以很遗憾再次问它.

为简单起见,我举一个小例子:

桌子EmpDetailsEmpiDEmpName.数值EmpID由数据库自动生成.

INSERT INTO EMPDETAILS VALUES("John")
Run Code Online (Sandbox Code Playgroud)

现在我想得到EmpID与约翰相关的价值

我不想要存储过程,我只想要一个SQL语句.

mar*_*c_s 8

是的 - 您可以在INSERT语句中使用鲜为人知且很少使用的OUTPUT子句

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

这将返回一组正常的数据,您可以根据需要进行处理.

正如MSDN文档所示,如果需要,您还可以将OUTPUT值发送到例如表变量或临时表中供以后使用.

要回答您更新的问题,请使用以下命令:

INSERT INTO dbo.EMPDETAILS(EmpName)
OUTPUT Inserted.EmpID
VALUES("John")
Run Code Online (Sandbox Code Playgroud)