0
阅读大量关于游标的恶意的文章,但对我来说,如果光标只读和只转发,它似乎是一个好方法。我是否认为这不会造成锁定。循环/遍历一组记录并执行一个存储过程
我需要选择一组记录并遍历它们,如果该行具有特定值,则执行一个操作。该acrion将是一个存储过程,并会将当前行的副本插入到具有某些更新日期的同一个表中)。可能有很多这些行,所以我正在寻找最有效的方式。
任何人都可以提出最有效的方法来解决这类问题吗?
阅读大量关于游标的恶意的文章,但对我来说,如果光标只读和只转发,它似乎是一个好方法。我是否认为这不会造成锁定。循环/遍历一组记录并执行一个存储过程
我需要选择一组记录并遍历它们,如果该行具有特定值,则执行一个操作。该acrion将是一个存储过程,并会将当前行的副本插入到具有某些更新日期的同一个表中)。可能有很多这些行,所以我正在寻找最有效的方式。
任何人都可以提出最有效的方法来解决这类问题吗?
你可以开始寻找到
用于例如
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
希望它有帮助!
你可以用一些示例数据来解释吗 – TheGameiswar
游标并不总是性能杀手,但它很难调试。尝试尽可能将循环转换为基于集合的逻辑,利用登台表执行更新工作。 – Eric
*“我想采取一些行,更新一些日期,然后重新插入到同一个表”*可以肯定地使用基于集合的逻辑来实现。这里几乎肯定不需要光标。 – iamdave