希望这很简单。我正在优化一个返回大约 500 多行的存储过程。我的计划是分批返回这些行,直到没有更多的行可以获取。
例如,我会得到 0-49 行——然后是 50-99,然后是 100-149,等等。
我已经使用以下 SQL 代码完成了这项工作:
CREATE PROCEDURE [dbo].[mySP]
@rowstart int,
@rowend int
AS
WITH MainQuery AS
(
HUGE SELECT STATEMENT HERE
)
select * from MainQuery where row between @rowstart and @rowend
当我执行这个 SP 时,我只需传入 rowstart 和 rowend 的值,它就会返回我想要的完美行的范围。
问题是,我想知道在每个查询之后有更多的行要获取。我想我可以通过在 MainQuery 块完成后返回@@ROWCOUNT来实现这一点,但我不知道如何在每次执行 SP 后获取返回的行范围和 @@ROWCOUNT 的值。
当我进行返回 50 行的初始查询时,如果我知道有 503 个 TOTAL 表行,我可以做一些简单的数学运算 (503/50) 并计算出我还需要调用多少次 SP。任何帮助表示赞赏!