Как заставить хранимую процедуру вернуть последний вставленный идентификатор - PullRequest
4 голосов
/ 26 апреля 2010

Здесь у меня есть хранимая процедура, которая вставляет строку, но как сделать так, чтобы она возвращала последний вставленный идентификатор без повторного запроса

CREATE PROCEDURE [dbo].[spInsertCriteriaItem]
@GroupID int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    insert into CriteriaItem (CriteriaGroupID) VALUES(@GroupID)
    --I don't want to make another query here
END

Возможно ли это сделать

Ответы [ 3 ]

5 голосов
/ 26 апреля 2010

Используя Sql Server, вы можете использовать предложение OUTPUT .

Что-то вроде

DECLARE @CriteriaItem TABLE (
        ID INT IDENTITY (1,1),
        CriteriaGroupID INT
)
insert into @CriteriaItem (CriteriaGroupID)
OUTPUT INSERTED.ID
VALUES(1)
4 голосов
/ 26 апреля 2010

Не знаю, какая у вас сделка без дополнительного запроса, но если вам нужны данные из базы данных, вам нужно запросить ее.

CREATE PROCEDURE [dbo].[spInsertCriteriaItem]
@GroupID int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    insert into CriteriaItem (CriteriaGroupID) VALUES(@GroupID);
    SELECT SCOPE_IDENTITY();
END
0 голосов
/ 21 июня 2011

Почему вы не хотите сделать еще один запрос?

CREATE PROCEDURE [dbo].[spInsertCriteriaItem]
@GroupID int
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    insert into CriteriaItem (CriteriaGroupID) VALUES(@GroupID);
    SELECT @@IDENTITY AS InsertedId;
END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...