我需要一些帮助来编写下面的存储过程:
我有一个SQL Server2008存储过程,它接受两个整数值(@ID1和@ID2)和一个数据表/TVP。
TVP表包含几个字段,即。标题和描述。
我想遍历TVP表并检查标题或描述是否已经存在于我的数据表tbl_Items中,其中@ID1 = tbl_Items.ID1和@ID2 = tbl_Items.ID2。
如果两者都不存在,则将@ID1和ID2的值以及该TVP行插入到tbl_Items中。
谢谢。
发布于 2011-05-13 07:24:55
像这样的东西?
INSERT INTO tbl_Items (ID1, ID2, Title, Description)
SELECT
@ID1, @ID2, TVP.Title, TVP.Description
FROM
@TVP AS TVP
WHERE
NOT EXISTS (SELECT * FROM tbl_Items AS I WHERE TVP.Title = I.Title AND TVP.Description = I.Description)发布于 2011-05-13 07:43:36
这个需求看起来有些模糊,但您应该能够使用MERGE
;WITH Target As
(
SELECT *
FROM tbl_Items
WHERE ID1=@ID1 AND ID2=@ID2
)
MERGE
INTO Target
USING @TVP AS Source
ON Target.Title = Source.Title OR Target.Description = Source.Description
WHEN NOT MATCHED
THEN INSERT (ID1, ID2, Title, Description)
VALUES (@ID1, @ID2, Title, Description)https://stackoverflow.com/questions/5985620
复制相似问题