当前位置: 首页 > 面试题库 >

SQL遍历列表以在每个项目上调用EXEC

丌官招
2023-03-14
问题内容

尝试概括我的问题…我想为SELECT语句返回的每个结果执行一个存储过程。

精神上,我想尝试类似EXEC myStoredProc(从某个表的SELECT ID中选择cond = @param)

与我的特定案例有关的更多详细信息…我有一个SaaS应用程序。我想从系统中删除一个租户。在删除租户之前,我必须删除与该租户关联的数据库中的所有记录。

租户拥有诸如包含许多不同类型字段的表单之类的项目。我已经有一个存储的proc,它删除一个Form及其所有相关项(如Fields)。出于维护原因(即,不想重复确定记录与表单之间的依赖关系和关联关系的逻辑),我只想为属于租户的每个表单都调用StoredProc。

我可以通过运行如下查询来检索表单列表:从表单WHERE Tenant = @TenantId中选择formId

我要对该查询的结果执行的操作是EXEC Delete_Form存储过程。

我怎样才能做到这一点?


问题答案:

如果您无法控制外键并且无法执行级联删除,则可以创建一个游标来循环并为每个循环执行存储的proc。

declare @formID int
declare FormsCursor cursor fast_forward for Select formId FROM Forms WHERE Tenant = @Tenant

open FormsCursor

fetch next from FormsCursor into @formID

while @@fetch_status = 0
begin

   exec Delete_Form @formID

   fetch next from FormsCursor into @formID

end

close FormsCursor
deallocate FormsCursor


 类似资料:
  • 该死的东西一个接一个! 数组(Arrays)是 Puppet 的一个强大特性; 不论何时,你要对列表中的元素执行相同的操作,数组就会帮你的忙。 你可以创建一个数组,将所有的数组元素放在一对方括号中并以逗号间隔,例如: $lunch = [ "franks", "beans", "mustard" ] 操作步骤 在你的配置清单中添加如下代码: $packages = [ "ruby1.8-dev"

  • 问题内容: 是否可以在Python中以以下方式迭代列表(将此代码作为伪代码进行处理)? 它应该产生 问题答案: 从食谱:

  • 问题内容: 所以我有2张桌子,和。 具有列,具有呼叫者的ID和进行呼叫的时间。然后,我有另一台已,,,,,有一个人,他们的位置的ID ,而且它们在该位置的时间。 我想写一个看起来像这样的查询: 基本上,这是在寻找给定值的最接近值。之后,最终,我想根据数据查找呼叫的位置。 我该怎么做?我知道有一种基于集合的方法,但是我不想那样做。我调查了一下,但是我感到在那方面的表现很糟糕……所以循环中是否有这样做

  • 问题内容: 我有两个列表和数字,我想使用相同的指令遍历它们。像这样: 但这感觉多余。我知道我会写,但是要付出一定的时间。 有没有办法做到这一点而又不浪费时间呢? 问题答案: 这可以通过以下方式完成 : 将打印: 根据文档,请执行以下操作: 创建一个迭代器,该迭代器从第一个可迭代对象返回元素,直到耗尽为止,然后继续进行下一个可迭代对象,直到所有可迭代对象都耗尽为止。 如果列表中有列表, 则可用: 产

  • 问题内容: 如何进行for循环或列表理解,以便每次迭代都给我两个元素? 输出: 问题答案: 你需要一个实施。 对于Python 2: 或更笼统地说: 在Python 3中,你可以替换为内置函数,然后删除import。 所有信贷蒂诺对他的回答到我的问题,我发现这是非常有效的,因为它只是在列表上循环一次,并在此过程中不会产生任何不必要的名单。 注意:不要将其与Python自己的文档中的pairwise

  • 问题内容: 在同时处理2个元素的同时迭代列表的最佳方法是什么? 例: 结果是: 我想实现: 问题答案: 只需增加2: