Jawaban:
Anda memerlukan variabel tabel dan bisa sesederhana ini.
declare @ID table (ID int)
insert into MyTable2(ID)
output inserted.ID into @ID
values (1)
output
?
DECLARE @InsertedIDResults TABLE (ID int); INSERT INTO MyTable (Name, Age) OUTPUT INSERTED.ID INTO @InsertedIDResults VALUES('My Name', 30); DECLARE @InsertedID int = (SELECT TOP 1 ID FROM @InsertedIDResults);
Lebih dari setahun kemudian ... jika yang Anda butuhkan adalah mendapatkan id tabel yang dibuat secara otomatis, Anda bisa saja
SELECT @ReportOptionId = SCOPE_IDENTITY()
Kalau tidak, sepertinya Anda terjebak menggunakan tabel.
Cara kemudian tetapi masih layak disebutkan adalah bahwa Anda juga dapat menggunakan variabel untuk menghasilkan nilai dalam klausa SET dari UPDATE atau dalam bidang SELECT;
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
Dalam contoh di atas @ val1 memiliki nilai sebelum dan @ val2 memiliki nilai setelah walaupun saya menduga perubahan dari pemicu tidak akan di val2 jadi Anda harus pergi dengan tabel output dalam kasus itu. Untuk apa pun kecuali kasus paling sederhana, saya pikir tabel output akan lebih mudah dibaca dalam kode Anda juga.
Satu tempat ini sangat membantu adalah jika Anda ingin mengubah kolom menjadi daftar yang dipisahkan koma;
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
.