到删除的记录我有一个存储过程中进行的插入记录,但以逗号分隔的字符串,分析它,并加入个人记录如何使用IN子句
Create PROCEDURE [dbo].[Save_List_PMIDS]
@MemberID INT= 88888,
@PMIDList VARCHAR(MAX)= '12345,56789,67432'
AS
BEGIN
SELECT Split.a.value('.', 'VARCHAR(100)') AS PMID
INTO #pmids
FROM (SELECT CAST ('<M>' + REPLACE(@PMIDList, ',', '</M><M>') + '</M>' AS XML) AS String
) AS A
CROSS APPLY String.nodes('/M') AS Split (a)
--DELETE FROM [dbo].[Publication.Person.Include]
--WHERE (MemberID = @MemberID) AND PMID IN (@PMIDList);
INSERT INTO [dbo].[Publication.Person.Include]
(PersonID, PMID, MemberID)
SELECT @MemberID, PMID, @MemberID
FROM #pmids
DROP TABLE #pmids
我的问题是与delete语句。如何将PMIDList字符串转换为IN列表中要使用的数字,以便我不添加重复项?
因此,它看起来像
DELETE FROM [dbo].[Publication.Person.Include]
WHERE (MemberID = @MemberID) AND PMID IN (12345,56789,67432);
在此先感谢
[传递一个varchar全逗号分隔值到SQL Server IN功能]的可能的复制(http://stackoverflow.com/questions/878833/passing -a-varchar-full-of-comma-delimited-values-to-a-sql-server-in-function) – AndreFeijo
http://stackoverflow.com/a/10333589/630284 – SQLMason
可能的重复[SQL in(@变量)查询](http://stackoverflow.com/questions/10333319/sql-in-variable-query) – SQLMason