对于分页,我通常在sql server 2012存储过程中使用这样的东西(使用sys.system_columns,不确定这是否是一个很好的表来演示):
DECLARE
@page INT = 10,
@pagesize INT = 10;
WITH syscols AS
(
SELECT
TotalRows = COUNT(1) OVER (),
RowNo = ROW_NUMBER() OVER (ORDER BY name),
Name
FROM sys.system_columns c
)
SELECT *
FROM syscols
WHERE RowNo BETWEEN 1 + (@page - 1) * @pagesize AND @page * @pagesize
ORDER BY RowNo;
我讨厌在每一行中包含TotalRows编号并且想知道,如果有正确的方法来返回TotalRows编号(例如OUTPUT参数) - 但是没有使用表变量或任何会使查询效率降低的东西?< / p>