2011-10-19 129 views
2

数据库:SQL Server 2008中从SQL Server INSERT语句返回值2008

有没有办法有一个INSERT语句在SQL Server返回一个值,

有在

类似的问题

Return a value from a insert statement,其中谈到ORACLE。

我不太喜欢数据库,也不太了解ORACLE/SQL Server,所以很抱歉再次提问。

为了简单起见,让我提供一个小例子:

EmpDetailsEmpiDEmpName。数据库自动生成EmpID的值。

INSERT INTO EMPDETAILS VALUES("John") 

现在我想要得到的EmpID与约翰

相关的,我不想存储过程中的价值,我只想要一个SQL语句。

+1

我不知道你为什么这么坚定的关于不想要一个存储过程,并返回'SCOPE_IDENTITY()'。 – JonH

+0

@JonH我并不坚持:-)这种情况要求我使用SQL语句。但随意张贴SP也是一个不好的方面,也许以后可能会帮助我/他人。 –

+0

没有理由发布一个,它会在SO数据库中重复,直接在本网站上搜索大量关于它的文章/问题。 – JonH

回答

7

是 - 你可以使用鲜为人知很少使用OUTPUT clause在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") 
+0

+1我们总是忘记输出条款。 – JonH

+0

@JonH:的确,这是许多开发人员忽视和不知道的那些“隐藏的宝石”之一...... –

+0

@marc_s谢谢。我已经更新了我的问题,能否为我提供EmpDetails表的sql语句。 –