`

Sqlserver分页脚本收集

阅读更多
select t.*
from (
select t.*
from (
select *,row_number() over (Order by nav desc) as pos
from F_FundNav
) t
where t.pos <=200
) t
where t.pos >=101

-----Create Procedure for Sqlserver 分页存储过程
-----修改他人存储过程
-----2007_12-25
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[sp_Pro_TestPage]
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@IsCount bit=0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(3000) ='', -- 查询条件 (注意: 不要加 where)
@StartIndex varchar(255),
@maxRows varchar(255)
AS
declare @strSQL varchar(3000) -- 主语句
declare @strCount varchar(3000) -- 返回数据的总条数语句
declare @strOrder varchar(3000) -- 排序类型语句
BEGIN
if @OrderType != 0
set @strOrder ='Order by'+@fldName+' desc'
else
set @strOrder = 'Order by ' + @fldName + ' asc'
END
set @strSQL = 'select t.* from (select t.* from (select *,row_number() over ('+ @strOrder +') as pos from ' + @tblName + ') t where t.pos <= ('+ @maxRows +')) t where t.pos >= '+@StartIndex
set @strCount = 'select count(0) Total from '+@tblName
BEGIN
if @strWhere != ''
set @strSQL = 'select t.* from (select t.* from (select *,row_number() over ('+ @strOrder +') as pos from ' + @tblName + 'where '+@strWhere+') t where t.pos <= ('+ @maxRows +')) t where t.pos >= '+@StartIndex
set @strCount = 'select count(0) Total from '+@tblName + 'where '+ @strWhere
END;
BEGIN
if @IsCount != 0  ----按需返回所需要的总数
exec (@strCount)
END;

exec (@strSQl)
GO
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics