SQL Server 2005如何迭代CSV或表没有光标?

时间:2012-04-02 15:41:32

标签: sql sql-server

我需要返回传递给我的存储过程的用户的电子邮件。可以将多个用户传递到存储过程中,以逗号分隔。

我有一个可以使用的分割表值函数

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

但是当某些值可能不在表格中时会出现问题,如果用户表中没有用户,我需要从CSV列表中插入用户。

我不想使用光标,所以最好的方法是做这样的事情吗?

2 个答案:

答案 0 :(得分:1)

如果您有SQL 2008,请使用MERGE语句。它可以非常方便。

答案 1 :(得分: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
)