您的位置:首页 > 数据库

通过存储过程进行分页查询的SQL示例

2014-09-18 13:43 676 查看
--创建人:zengfanlong
--创建时间:2014-7-28 10:51:15
--说明:根据公司简写代码获取当前待同步的气瓶档案数据(分页获取)
ALTER PROCEDURE [UP_GasBottles_GetSyncData_ByPage]
(
@CompanyAbbrCode NVARCHAR(255) = '' ,
@LatastRowVersion_BigInt BIGINT ,
@CurrentMaxRowVersion_BigInt BIGINT ,
@StartPageIndex INT = 0 ,
@EndPageIndex INT = 0 ,
@TotalCount INT OUTPUT
)
AS
BEGIN

--(1)、定义SQL查询
SELECT  *
INTO    #tempTb
FROM    dbo.GasBottles AS gs WITH ( NOLOCK )
WHERE   ISNULL(GasBottleNo, '') <> ''
AND REPLACE(( SUBSTRING(gs.GasBottleNo, 1, 5) ), '-', '') = @companyAbbrCode
AND ( CAST([RowVersion] AS BIGINT) > @LatastRowVersion_BigInt
AND CAST([RowVersion] AS BIGINT) <= @CurrentMaxRowVersion_BigInt
)

IF ( @StartPageIndex <= 0
AND @EndPageIndex <= 0
)
BEGIN

SELECT  *
FROM    #tempTb

--返回总页数
SET @TotalCount = ( SELECT  COUNT(1)
FROM    #tempTb
)
END
ELSE
BEGIN

--分页获取数据
SELECT  ROW_NUMBER() OVER ( ORDER BY GETDATE() ) AS 'Row' ,
*
INTO    #tempAll
FROM    #tempTb

SELECT  *
FROM    #tempAll
WHERE   Row BETWEEN @StartPageIndex AND @EndPageIndex

TRUNCATE TABLE #tempAll
DROP TABLE #tempAll
END

--删除历史表
TRUNCATE TABLE #tempTb
DROP TABLE #tempTb

END
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: