SQL Server 2008-为表的每一行调用存储过程的最佳做法



我有一个存储过程,它应该执行以下操作:-

  1. 执行业务逻辑并选择Subscription Id的列表
  2. 对于上面选择的每一行,调用单独的存储过程以获取为该特定订阅id订阅的代理列表
  3. 将每一行的结果插入另外两个表中

现在,我对点2使用了While循环,并使用IF条件语句为不同的Subscription ID调用不同的SP。

注意:-在第二步中要调用的存储过程的名称是动态的,并且随订阅ID的不同而变化。不同SP的返回结构是相同的。我无法控制这些程序,也无法将这些proc转换为TVF,因此实施交叉应用(如果有效的话)将是一个问题。

我的问题是,有没有任何方法可以避免这种迭代方法,并通过遵循基于集合的方法来实现相同的功能?

在第2点中我解释了最佳实践以及将存储过程转换为TVF的必要性之后,客户端已经同意了,因此现在使用TVF和Cross-Apply解决了问题。谢谢

最新更新