如何从表值参数中删除记录?

时间:2011-05-10 17:29:02

标签: sql sql-server tsql sql-server-2008 stored-procedures

我想知道如何从SQL中的表值参数中删除值? 这甚至可能吗?如果没有,那么解决方法是什么?

请参阅下面的代码并注明评论。注释部分是我想插入一行的地方,这条线允许我从TVP中删除记录@Record_NumList

删除该记录后,我继续插入一个新记录(基本上,我不想在现有记录上执行存储过程)。

DECLARE @RecordID int
DECLARE @RecordID_NumList as Le_NumberList
DECLARE cur_DelRec CURSOR
      FOR
            SELECT DBRecordID from <<table_name>>

      OPEN cur_DelRec

            FETCH NEXT from cur_DelRec into @RecordID
            INSERT into @RecordID_NumList(@RecordID)
            WHILE @@FETCH_STATUS = 0
                  BEGIN
                        exec <<stored_procedure>> @RecordID_NumList

                        /* I'm stuck here:  */
                /* Need to remove from the existing record
                from @RecordID_NumList */

                        FETCH NEXT FROM cur_DelRec into @RecordID
                        INSERT into @RecordID_NumList(@RecordID)
                  END

      CLOSE cur_DelRec
DEALLOCATE cur_DelRec

在更一般的层面上,TVP是一个集合吗?假设我选择不从@Record_NumList中删除它。在那种情况下会发生什么?

我道歉,但我仍在学习SQL,我们将非常感谢任何帮助!

1 个答案:

答案 0 :(得分:3)

表值参数就像常规表一样工作。你应该能够做这样的事情:

delete from @Record_numList where [field] = [value]