0

こんにちは、ストアド プロシージャがあります。その行の ID を選択するよりも行を挿入しています。

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

select id from tTest where name=@name;

これを1つのステートメントにまとめる方法があるかどうか疑問に思っていました。新しい行の ID を選択し、同時に行を挿入できる場所。私にお知らせください。ありがとう

4

2 に答える 2

3

あなたのフォーマットは私にはまったく奇妙ですが、試してください:

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

後で値を使用する必要がある場合は、次のいずれかが必要になるため、「1 つのステートメント」の要件を削除できます。

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 ServersOUTPUT句を調べてください: http://technet.microsoft.com/en-us/library/ms177564.aspx

于 2013-08-21T16:43:32.867 に答える