循环/迭代一组记录并执行存储过程

时间:2016-11-29 09:58:13

标签: sql-server

阅读了很多关于游标之恶的文章,但对我来说,如果游标只是只读而且只是前进,那么好像是很好的方法。我是否正确地认为这不会导致锁定。

如果行具有特定值,我需要选择一组记录并迭代它们执行操作。 acrion将是一个存储过程,并将当前行的副本插入到具有一些更新日期的同一个表中。可能会有很多这样的行,所以我正在寻找最有效的方法。

有人能提出解决此类问题的最有效方法吗?

1 个答案:

答案 0 :(得分:0)

你可以开始研究

例如

WITH 
  cteTotalSales (SalesPersonID, NetSales)
  AS
  (
    SELECT SalesPersonID, ROUND(SUM(SubTotal), 2)
    FROM Sales.SalesOrderHeader 
    WHERE SalesPersonID IS NOT NULL
    GROUP BY SalesPersonID
  )
SELECT 
  sp.FirstName + ' ' + sp.LastName AS FullName,
  sp.City + ', ' + StateProvinceName AS Location,
  ts.NetSales
FROM Sales.vSalesPerson AS sp
  INNER JOIN cteTotalSales AS ts
    ON sp.BusinessEntityID = ts.SalesPersonID
ORDER BY ts.NetSales DESC

希望它有所帮助!