Вывод SQL Server в скалярную переменную - программирование
Подтвердить что ты не робот

Вывод SQL Server в скалярную переменную

Есть ли какой-либо "простой" способ сделать это, или мне нужно передать переменную таблицы с синтаксисом "OUTPUT... INTO"?

DECLARE @someInt int

INSERT INTO MyTable2(AIntColumn)
OUTPUT @SomeInt = Inserted.AIntColumn
VALUES(12)
4b9b3361

Ответ 1

Вам нужна переменная таблицы, и это может быть просто.

declare @ID table (ID int)

insert into MyTable2(ID)
output inserted.ID into @ID
values (1)

Ответ 2

Более года спустя... если вам нужно получить автоматически сгенерированный идентификатор таблицы, вы можете просто

SELECT @ReportOptionId = SCOPE_IDENTITY()

В противном случае кажется, что вы застряли в использовании таблицы.

Ответ 3

Позже, но все же стоит упомянуть, что вы можете также использовать переменные для вывода значений в предложении 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 имеет значение before, а @val2 - значение after, хотя я подозреваю, что любые изменения в триггере не будут в val2, поэтому вам придется использовать выходную таблицу в этом случае. Я думаю, что для всего, кроме самого простого случая, выходная таблица будет более читабельной в вашем коде.

Это очень полезно, если вы хотите превратить столбец в разделенный запятыми список;

DECLARE @list varchar(max) = '';
DECLARE @comma varchar(2) = '';
SELECT @list = @list + @comma + County, @comma = ', ' FROM County
print @list