0

嗨,我有一个存储过程,我在其中插入一行而不是选择该行的 Id。

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

select id from tTest where name=@name;

我想知道是否有一种方法可以将其组合成一个语句。我可以在其中选择新行的 Id 并同时插入行。请告诉我。谢谢

4

2 回答 2

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
于 2013-08-21T16:43:22.180 回答
0

查看 SQL ServerOUTPUT子句:http ://technet.microsoft.com/en-us/library/ms177564.aspx

于 2013-08-21T16:43:32.867 回答