2013-07-30 5 views
-1

Я пытаюсь создать два списка адресов электронной почты, один из них - список всех пользователей, которые в настоящее время вошли в базу данных, а другие - это те, кто этого не делает.Создать список пользователей электронной почты?

Кажется, что я не могу заполнить переменные @usersin и @usersout, я получаю вывод NULL из последних двух SELECT ... может ли кто-нибудь взглянуть на мой код ниже и сказать мне что с этим не так?

SELECT @maxurn = MAX(ID) FROM ##tmp2 
SET @urn = 1 
WHILE @urn <= @maxurn 

BEGIN 

SET @usersin = @usersin + (SELECT [USER_NAME] + ';' FROM ##tmp2 WHERE [LoggedIn]='YES' 
AND ID = @urn FOR XML PATH('')) 

SELECT @urn = @urn + 1 
END 

SET @urn = 1 
WHILE @urn <= @maxurn 

BEGIN 

SET @usersout = @usersout + (SELECT [USER_NAME] + ';' FROM ##tmp2 WHERE [LoggedIn]='NO' 
AND ID = @urn FOR XML PATH('')) 

SELECT @urn = @urn + 1 
END 

SELECT @usersin 
SELECT @usersout 

ответ

1

Казалось бы, по дизайну. Если вы конкатенация NULL с некоторым значением, результат NULL:

SQL Server String Concatenation with Null

, следовательно, ваша попытки установить @usersin и @usersout терпит неудачу, потому что они являются NULL, чтобы начать с. Либо присваивать его напрямую (не конкатенировать), либо давать ему начальное значение (например, пустую строку).

Смежные вопросы