Відповіді:
Вам потрібна змінна таблиця, і це може бути просто.
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);
Через рік ... якщо вам потрібно отримати автоматично створений ідентифікатор таблиці, ви можете просто
SELECT @ReportOptionId = SCOPE_IDENTITY()
В іншому випадку здається, що ви застрягли з використанням таблиці.
Шлях пізніше, але все-таки варто згадати, що ви також можете використовувати змінні для виведення значень у пункті SET UPDATE або в полях 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
У наведеному вище прикладі @ val1 має значення раніше, а @ val2 - значення після, хоча я підозрюю, що будь-яких змін від тригера не було б у val2, тож у цьому випадку вам доведеться перейти з таблицею виводу. Що стосується всього, окрім найпростішого випадку, я думаю, що таблиця виводу також буде читабельнішою у вашому коді.
Це дуже корисне місце, якщо ви хочете перетворити стовпець у список, розділений комами;
DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list
SET @val2 = NextNum = NextNum + 1
.