无需游标即可为表中的每一行执行存储过程
当面临为表中每一行调用存储过程的任务时对于一个表,很自然地会考虑使用游标迭代行的方法。但是,不依赖游标也可以完成此任务。
利用基于集合的方法
在基于集合的方法中,我们的目标是找到一个同时对所有行执行操作的方法。例如,如果我们的目标是更新表中每一行的列,我们可以利用带有适当 WHERE 子句的 UPDATE 语句一次性修改相关记录。
具体情况:迭代行列
但是,在处理行的列需要用作存储过程的输入参数的场景时,稍微有点需要采取不同的方法。如提供的答案中所述:
代码示例
提供的代码片段说明了如何实现此方法:
-- Declare & initialize (2008 syntax) DECLARE @CustomerID INT = 0 -- Iterate over all customers WHILE (1 = 1) BEGIN -- Get next customerId SELECT TOP 1 @CustomerID = CustomerID FROM Sales.Customer WHERE CustomerID > @CustomerId ORDER BY CustomerID -- Exit loop if no more customers IF @@ROWCOUNT = 0 BREAK; -- call your sproc EXEC dbo.YOURSPROC @CustomerId END
以上是可以在没有游标的情况下对表的每一行执行存储过程吗?的详细内容。更多信息请关注PHP中文网其他相关文章!