Jus*_*tin 4 sql iteration loops stored-procedures exec
尝试概括我的问题...我想为SELECT语句返回的每个结果执行存储过程.
在心理上我想尝试像EXEC myStoredProc(SELECT id FROM sometable WHERE cond = @param)
有关我的具体案例的更多细节......我有一个SaaS应用程序.我想从系统中删除租户.在我删除租户之前,我必须删除与该租户关联的数据库中的所有记录.
租户拥有诸如包含许多不同类型的字段的表单之类的项目.我已经有一个存储过程删除一个Form及其所有相关项(如Fields).出于维护原因(即不想复制确定记录和表单之间的依赖关系和关联的逻辑)我想为每个属于租户的表单调用StoredProc.
我可以通过运行查询来检索表单列表...选择formId FROM Forms WHERE Tenant = @TenantId
我想对该查询的结果做的是EXEC我的Delete_Form存储过程.
我怎样才能做到这一点?
如果您无法控制外键并且无法进行级联删除,则可以创建一个游标循环直播并为每个执行存储过程.
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
Run Code Online (Sandbox Code Playgroud)