在一个语句中插入并选择行ID

时间:2013-08-21 16:41:10

标签: sql sql-server tsql

您好我有一个存储过程,我在这里插入一行而不是选择该行的Id。

insert into tTest 
  (  loca
    ,name
  ) values (
    @loc
    ,@name
  );

select id from tTest where name=@name;

我想知道是否有办法将其合并为一个陈述。我可以在哪里选择新行的Id以及同时插入行。请告诉我。谢谢

2 个答案:

答案 0 :(得分:3)

您的格式对我来说绝对奇怪,但请尝试:

insert into tTest 
  (  loca
    ,name
  )
OUTPUT inserted.id
  values (
    @loc
    ,@name
  );

如果您稍后需要使用该值,则可以删除“一个声明”的要求,因为您需要:

使用SCOPE_IDENTITY()

DECLARE @id INT;

insert into tTest 
  (  loca
    ,name
  )
  values (
    @loc
    ,@name
  );

SELECT @id = SCOPE_IDENTITY();

过度杀戮并使用表格变量

DECLARE @idTable TABLE(ID INT);

insert into tTest 
  (  loca
    ,name
  )
OUTPUT inserted.id INTO @idTable
  values (
    @loc
    ,@name
  );

-- reference @idTable later

答案 1 :(得分:0)