0

我需要一些帮助来编写以下存储过程:

我有接受两个整数值(@ID1 和@ID2)和一个数据表/TVP 的 SQL Server 2008 sproc。

TVP 表包含几个字段,即。标题和说明。

我想遍历 TVP 表并检查 Title 或 Description 是否已存在于我的数据表 tbl_Items 中,其中@ID1 = tbl_Items.ID1 和@ID2 = tbl_Items.ID2。

如果两者都不存在,则将@ID1 和 ID2 的值以及该 TVP 行插入 tbl_Items。

谢谢。

4

2 回答 2

1

像这样的东西?

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-12T23:24:55.063 回答
0

要求似乎有些不清楚,但您应该可以使用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)
于 2011-05-12T23:43:35.827 回答