2012-04-02 3 views
2

Мне нужно вернуть электронное письмо пользователей, переданных моей хранимой процедуре. Возможно, что несколько пользователей будут переданы в хранимую процедуру, разделенные запятой.SQL Server 2005 как перебирать CSV или таблицу без курсора?

У меня есть функция сплит табличное значение можно использовать

INSERT INTO @stTbl 
    SELECT value 
    FROM fn_Split(@UFID , ',') 

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

Я не хочу использовать курсор, так что лучший способ сделать что-то подобное?

ответ

1
INSERT INTO @stTbl (value) 
SELECT value 
FROM fn_Split(@UFID , ',') AS F 
WHERE NOT EXISTS (
    SELECT NULL 
    FROM @stTbl AS T 
    WHERE T.value = F.value 
) 
1

Если у вас есть SQL 2008, используйте оператор MERGE. Это может быть невероятно удобно.

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