我正在使用MS SQL存储过程来检索数据并将其显示在GRID中。我的问题是存储过程具有复杂的查询,并且它总共返回了12K条记录。但是在网格中仅公开第1条50条记录。
我已经使用SQL提取和偏移量概念来避免不需要的数据,但是我希望总数可以将其显示在网格中。
您能提出建议更好的解决方案吗?
答案 0 :(得分:1)
在全球范围内,您可以构建这样的结构:
create PROCEDURE your_sp
@PageNumber INT = 1,
@PageSize INT = 10,
DECLARE @lPageSize INT= @PageSize;
DECLARE @lFirstRecord INT= (@lPageNumber - 1) * @lPageSize;
DECLARE @lLastRecord INT= (@lPageNumber * @lPageSize + 1);
CREATE TABLE #tmp (...)
INSERT INTO #tmp (
select * from
(... your sub select heer)
WHERE ROWNUM > @lFirstRecord
AND ROWNUM < @lLastRecord
)
-- Count all results in temporary table
DECLARE @COUNT BIGINT;
SET @COUNT =
(
SELECT COUNT(*)
FROM #tmp
);
-- Apply paging to temporary table, and output results
SELECT
*,
@COUNT [Count]
FROM #tmp
WHERE ROWNUM > @lFirstRecord
AND ROWNUM < @lLastRecord
ORDER BY ROWNUM ASC;
DROP TABLE #tmp;