web-dev-qa-db-ja.com

UPDATEステートメントのOUTPUTをローカル変数に送る

私はこれをしたいと思います:

DECLARE @Id INT;

UPDATE Logins
SET    SomeField = 'some value'
OUTPUT @Id = Id
WHERE  EmailAddress = @EmailAddress -- this is a parameter of the sproc

これは可能ですか?ローカルテーブル変数を宣言してそこに出力を送信できることはわかっていますが、可能であればスキップすることをお勧めします

12
Andrei Rînea

いいえ、複数行を潜在的にOUTPUTtingしているため、スカラー変数には適合しません。

複数の行の出力を処理するには、@Table変数または宣言されたテーブルに出力する必要があります。

15
JNK
declare @status_atividade bit;

update t1 set         
    t1.idioma = t2.idioma, 
    t1.regiao = t2.regiao, 
    t1.fuso_horario = t2.fuso_horario,
    @status_atividade = t2.status_atividade

from 
    @usuario as t1  
join 
    dbo.locatario as  t2 
on 
    t1.id_locatario = t2.id_locatario

select @status_atividade
0
Rangel Borene