Yanıtlar:
Bir tablo değişkenine ihtiyacınız var ve bu kadar basit olabilir.
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);
Bir yıldan fazla bir süre sonra ... ihtiyacınız olan şey bir tablonun otomatik olarak oluşturulan kimliğini almaksa,
SELECT @ReportOptionId = SCOPE_IDENTITY()
Aksi takdirde, bir tablo kullanmak zorunda kalmışsınız gibi görünüyor.
Daha sonra, ancak yine de bahsetmeye değer, değişkenleri bir UPDATE'in SET yan tümcesinde veya bir SELECT'in alanlarında değerleri çıkarmak için de kullanabileceğinizdir;
DECLARE @val1 int;
DECLARE @val2 int;
UPDATE [dbo].[PortalCounters_TEST]
SET @val1 = NextNum, @val2 = NextNum = NextNum + 1
WHERE [Condition] = 'unique value'
SELECT @val1, @val2
Yukarıdaki örnekte @ val1 önceki değere sahiptir ve @ val2 sonraki değere sahiptir, ancak bir tetikleyiciden herhangi bir değişikliğin val2'de olmayacağından şüpheleniyorum, bu durumda çıktı tablosuna gitmeniz gerekir. En basit durum dışında herhangi bir şey için, çıktı tablosunun kodunuzda daha okunabilir olacağını düşünüyorum.
Bunun çok yararlı olduğu yerlerden biri, bir sütunu virgülle ayrılmış bir listeye dönüştürmek istiyorsanız;
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
.
OUTPUT
bir INSERT
maddede bir değişkene bir değer atamanın bir yolunu arıyordum INSERT-OUTPUT-VALUES
.