如何使存储过程返回最后插入的id

Luk*_*101 4 c# sql-server-2008

这里我有一个插入行的存储过程,但是如何使它返回最后插入的id而不进行另一个查询

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
Run Code Online (Sandbox Code Playgroud)

是否有可能做到这一点

Sam*_*eff 6

不知道你的交易是什么而没有额外的查询,但如果你想要来自数据库的数据,你必须查询它。

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
Run Code Online (Sandbox Code Playgroud)


Adr*_*der 5

使用Sql Server,您可以使用OUTPUT子句.

就像是

DECLARE @CriteriaItem TABLE (
        ID INT IDENTITY (1,1),
        CriteriaGroupID INT
)
insert into @CriteriaItem (CriteriaGroupID)
OUTPUT INSERTED.ID
VALUES(1)
Run Code Online (Sandbox Code Playgroud)