Как уже сказал Ларну, скалярная переменная содержит 1 (одно) значение за один раз . Когда выполнение запроса достигает конца пакетной команды (наиболее вероятно, что вы используете команду по умолчанию GO
), эта переменная автоматически уничтожается, то есть теряется значение, сохраняемое до этой точки.
Если вы хотите хранить больше значений в нескольких столбцах одновременно, вам следует использовать переменную таблицы.
Вы можете использовать что-то вроде этого:
DECLARE @UserGroupBranchMapping TABLE(
UserId int,
username nvarchar(200),
isActive bit,
CountryName nvarchar(200),
AccessType int
)
INSERT INTO @UserGroupBranchMapping (UserId, username, isActive, CountryName, AccessType)
VALUES(140, N'demo1@demo1.com', 1, N'SOUTH AFRICA', 2), (140, N'demo1@demo1.com', 1, N'BOTSWANA', 1)
Следующий оператор SELECT
даст следующий результат:
SELECT *
FROM @UserGroupBranchMapping
UserId username isActive CountryName AccessType
------------------------------------------------------------
140 demo1@demo1.com 1 SOUTH AFRICA 2
140 demo1@demo1.com 1 BOTSWANA 1
Будьте осторожны, чтобы табличная переменная имела поведение, аналогичное скалярной переменной, а это означает, что при достижении пакетной команды она теряет все значения.