Присвоить сразу несколько переменных одновременно в результате действия Select Statement

Вопрос: Из-за времени выполнения я хочу присвоить столбцам однострочного набора результатов сразу нескольким переменным в хранимой процедуре SQL-Server. Я хочу заменить последние 2 строки следующего кода: Declare @A int Declare @B int Select @A = (Select Col1 From Table1 Where ID=1234) Select @B = (Select Col2 From Table1 Where ID=1234) Так как в этой версии

Вопрос:

Из-за времени выполнения я хочу присвоить столбцам однострочного набора результатов сразу нескольким переменным в хранимой процедуре SQL-Server. Я хочу заменить последние 2 строки следующего кода:

Declare @A int Declare @B int Select @A = (Select Col1 From Table1 Where ID=1234) Select @B = (Select Col2 From Table1 Where ID=1234)

Так как в этой версии программа будет искать дважды для ID = 1234, я хочу сделать что-то вроде

Select @A, @B = (Select Col1, Col2 From Table1 Where ID=1234)

Но я не могу понять правильный синтаксис для этого.

Лучший ответ:

Вы можете сделать это

Select @A =Col1,@B=Col2 From Table1 Where ID=1234 Ответ №1

Просто запятая разделяет их и имеет назначения непосредственно в SELECT а не используя подзапрос:

Select @A = Col1,@B = Col2 From Table1 Where ID=1234

См. select @local_variable:

SELECT { @local_variable { = | += | -= | *= | /= | %= | &= | ^= | |= } expression } [ ,…n ] [ ; ]

Где [,…n] означает, что вы можете повторять предыдущую часть столько раз, сколько хотите, разделяя каждое повторение запятой.

Ответ №2

Для отдельной инструкции присваивания вам необходимо использовать SET

DECLARE @A INT DECLARE @B INT SET @A = (SELECT Col1 FROM Table1 WHERE ID = 1234) SET @B = (SELECT Col2 FROM Table1 WHERE ID = 1234)

Для одного оператора присваивания вы можете использовать

SELECT @A = Col1, @B = Col2 FROM Table1 WHERE ID = 1234 Ответ №3

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

Оцените статью
Добавить комментарий