的代码是这样的在存储过程
INSERT INTO TABLE (VAL1,VAL2,VAL3) VALUES (X,Y,Z)
GetLastInsertID @tablename='TABLE'
GetLastInsertID使用@@ IDENTITY SCOPE_IDENTITY或()+插入,一起为这个存储过程:
SELECT @@IDENTITY AS LastID FROM TABLE
如何获得存储过程按照上面Select @@ IDENTITY语句中的要求返回'LastID'?
我得到以下错误:
Incorrect syntax near 'GetLastInsertId'.
...但是当自行执行这工作得很好:
GetLastInsertID @tablename='TABLE'
好,谢谢,我更新,以SCOPE_IDENTITY()。但是你说不要把它放在一个不同的SP中,把它放在与Insert相同的SP中?
再说,我还是我得到一个错误,当我与此相结合的刀片:
SELECT SCOPE_IDENTITY() AS LastID FROM TABLE
这里是新的错误消息:
There is already an object named 'TABLE' in the database.
使用[SCOPE_IDENTITY()](http://msdn.microsoft.com/en-us/library/ms190315.aspx)是优选的,而不是'@@ IDENTITY'。 –
@Joe:请参阅[Joel的答案](http://stackoverflow.com/questions/7236141/using-identity-insert-together-in-stored-procedures/7236192#7236192),SCOPE_IDENTITY不起作用,因为存储 - 程序是一个不同的范围。 –
请参阅[Identity Crisis](http://msdn.microsoft.com/zh-cn/library/aa224821(SQL.80).aspx)为什么@@ IDentity不好。它的一篇旧文章,但标题很容易记住 –