2010-10-13 88 views
0

所以我很困惑如何编写这个过程。这是需要做的。通过循环通过Id的删除记录的存储过程

我已经制定了3个表如下:

tblObject {的ObjectId,MasterId}

tblAnotherObject {的ObjectId}

tblFurtherObject {的ObjectId}

我需要一个进程,可以删除'tblAnotherObject'和'tblFurtherObject'中的行包含一个'ObjectId',它在'tblObject'中没有匹配的'ObjectId',与'MasterId'传递给proc。

今天我一直在墙上撞了我的头几个小时,我不知道如何写这样的东西......提前非常感谢你。

+0

这部分“与'MasterId'中传递给proc'的部分不完全清楚。你能详细说明一下这个部分吗? – InSane 2010-10-13 03:22:18

+0

请发布您迄今为止编写的代码。人们通常不喜欢只为你写代码。 – 2010-10-13 03:22:36

+0

@InSane - 说tblObject包含一个具有MasterId = 4和ObjectId = 15的行。我想删除其他两个表中ObjectId = 15的所有行。但是,如果tblObject的MasterId = 5和ObjectId = 15,并且我传入@MasterId = 4,并且没有MasterId = 4和ObjectId = 15的记录,这些行不需要删除。 – Scott 2010-10-13 03:27:51

回答

2

我需要一个进程,可以在“tblAnotherObject”和“tblFurtherObject”删除行包含一个“的ObjectId”不具有在与在'所传递的“配对tblObject”匹配“的ObjectId” MasterId'到proc。

用途:

DELETE FROM TBLANOTHEROBJECT 
WHERE NOT EXISTS(SELECT NULL 
        FROM TBLOBJECT o 
        WHERE o.masterid = @masterid 
        AND o.objectid = TBLANOTHEROBJECT.objectid) 

DELETE FROM TBLFURTHEROBJECT 
WHERE NOT EXISTS(SELECT NULL 
        FROM TBLOBJECT o 
        WHERE o.masterid = @masterid 
        AND o.objectid = TBLFURTHEROBJECT.objectid) 

说tblObject包含具有MasterId = 4的ObjectId = 15.我想删除其他两个表中的所有行一排具有的ObjectId = 15.

这是相反的 - 使用:

DELETE FROM TBLANOTHEROBJECT 
WHERE EXISTS(SELECT NULL 
       FROM TBLOBJECT o 
       WHERE o.masterid = @masterid 
       AND o.objectid = TBLANOTHEROBJECT.objectid) 

DELETE FROM TBLFURTHEROBJECT 
WHERE EXISTS(SELECT NULL 
       FROM TBLOBJECT o 
       WHERE o.masterid = @masterid 
       AND o.objectid = TBLFURTHEROBJECT.objectid)