Код как этотИспользование @@ IDENTITY или SCOPE_IDENTITY() + Insert, а в хранимых процедурах
INSERT INTO TABLE (VAL1,VAL2,VAL3) VALUES (X,Y,Z)
GetLastInsertID @tablename='TABLE'
GetLastInsertID это хранимая процедура:
SELECT @@IDENTITY AS LastID FROM TABLE
Как получить хранимую процедуру вернуть «LastID» в соответствии с запросом в выписке Select @@ IDENTITY выше?
я получаю следующее сообщение об ошибке:
Incorrect syntax near 'GetLastInsertId'.
... но это хорошо работает, когда выполняется сама по себе:
GetLastInsertID @tablename='TABLE'
Хорошо, спасибо я обновил его scope_identity(). Но вы говорите, что не ставите его в другой SP, чтобы поместить его в тот же SP, что и Insert?
Опять же, я до сих пор я получаю сообщение об ошибке, когда я объединить вставку с этим:
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: см. [Ответ Джоэля] (http://stackoverflow.com/questions/7236141/using-identity-insert-together-in-stored-procedures/7236192#7236192), SCOPE_IDENTITY не будет работать, процедура является другой сферой. –
См. [Кризис идентичности] (http://msdn.microsoft.com/en-us/library/aa224821 (SQL.80) .aspx), почему @@ IDentity является плохим. Его старая статья, но название легко запомнить –