为每行调用存储过程的最佳方法是什么?

时间:2011-06-01 06:39:36

标签: sql sql-server sql-server-2005 tsql sql-server-2008

我尝试使用与源相同的方案将this个表集复制到其他集合。

我在SQL中编写了存储过程,它从TableA接收ID并从B-G复制所有表。 现在我想让TalbeA的每一行调用那个存储过程。我可以使用 CURSOR WHILE 但是,我读到不建议使用CURSOR,并且WHILE比CURSOR慢。 还有其他方法或在这种情况下CURSOR \ WHILE是解决方案吗?

谢谢

2 个答案:

答案 0 :(得分:2)

在这种情况下,CURSOR / WHILE很好 - 没有更好的方法来调用每行的sproc。但是,如果这可能会对系统产生影响,那么在运行它时要小心。

如果你可以编写代码,还有一个更好的选择 - 那就是在一堆SQL语句中对TableA及以下的记录执行所有“复制”,完全避免使用游标。总结这个建议 - 基于集合而不是基于行。

答案 1 :(得分:0)

除非在存储过程中执行此复制具有显着优势,否则最好在当前脚本中重写内联复制。

如果您想知道如何实现这一目标,如果您需要维护外键,使用标识列等,您可以查看我对How Can I avoid using a cursor...的回答。