2014-02-18 20 views
-1

我想實際的表比較@TableType_TVP IF重複行存在比較實際表@TypeTable_TVP IF重複行存在

Create procedure sp_InsertintoTable 
@TableType_TVP TableType_TVP READONLY 
AS 

IF(Duplicate Row not Exist then) 
Begin 
    INSERT INTO ActualTable 
    Select * from @TableType_TVP 

     Select Inserted row count also 
END 
else 
    Begin 
     Count Duplicate Row 
    End 
+0

你卡在什麼地方或要求從上面的僞代碼另一個替代解決方案? –

+0

我該怎麼做這個任務 –

+0

我想返回Duplicte行數和插入的行數。 –

回答

1

試試這個。 注意:我還沒有在SSMS中測試下面的查詢。因此,如果有任何語法錯誤,請指出。

CREATE PROCEDURE proc_InsertintoTable 
@TableType_TVP TABLE READONLY 
AS 
BEGIN 
    DECLARE @insertedCnt INT, @dupCnt INT 

    -- FETCH DUPLICATE ROW 
    SELECT @dupCnt = COUNT(*) 
    FROM ActualTable atbl 
    WHERE EXISTS (
      SELECT 1 
      FROM @TableType_TVP tv 
      WHERE atbl.ID = tv.ID 
      ) 

    -- INSERT NEW ROW 
    INSERT INTO ActualTable 
     SELECT * FROM @TableType_TVP tv 
     WHERE NOT EXISTS (
       SELECT 1 
       FROM ActualTable atbl 
       WHERE atbl.ID = tv.ID 
       ) 

     SELECT @insertedCnt = @@Rowcount 

    -- SELECT BOTH VARIABLE 
    SELECT @insertedCnt, @dupCnt 
    -- OR YOU CAN ALSO SET THIS 2 VARIABLE AS OUT VARIABLE 

END 
+0

謝謝非常親愛的它正在完美 –

+0

很高興幫助你... –