存储过程--分页
来源:互联网 发布:知柏地黄丸多久一疗程 编辑:程序博客网 时间:2024/06/07 16:54
CREATE PROCEDURE sp_page
@CurrentPage int, @PageSize int,@Field_Info varchar(500),@Table_info varchar(20),@Field_id varchar(10),@intOrder int,@otherwhere varchar(50),@RecordCount int output,@PageCount int output
--@CurrentPage为显示那一页,@PageSize为每一页显示几行,@Field_info为要显示的字段可以为*,@Table_info为要查询的表或视图,@field_id为按这个字段排序,@intorder0为升序排1为降序排,@otherwhere为条件,@RecordCount为总行数,@PageCount为总页数
AS
DECLARE @MinPage int, @MaxPage int
declare @sql varchar(1000)
declare @sqlt nvarchar(300)
declare @order varchar(4)
set @sqlt = 'SELECT @RecordCount = COUNT( ' + @Field_id + ') FROM ' + @Table_Info
exec sp_executesql @sqlt,N '@RecordCount int output ',@RecordCount output --如何将exec执行结果放入变量中,如果是字符串就要用N,N后面的变量一定要和@sqlt里面的变量同名
IF @PageSize <= 0
begin
set @PageSize = 10
end
else if @PageSize > @RecordCount
begin
set @pageSize = @RecordCount
end
set @pagecount = @RecordCount / @PageSize
if ((@recordcount % @pagesize) != 0) --如果除不尽则加一页
begin
set @PageCount = @RecordCount / @PageSize
set @PageCount = @pagecount + 1
end
else
begin
set @pagecount = @recordcount /@PageSize
end
IF @CurrentPage <= 0
begin
set @CurrentPage = 1
end
else if @CurrentPage > @pagecount
begin
set @currentpage = @pagecount --如果输入页数大于总页数则符最后一页
end
SET @MinPage = (@CurrentPage - 1) * @PageSize + 1
SET @MaxPage = @MinPage + @PageSize - 1
BEGIN
if @intorder = 0
set @order = 'asc '
else
set @order = 'desc '
if @Field_Info like ' '
set @field_Info = '* '
if @otherwhere like ' '
set @sql = 'select ' + @Field_Info + ' from (select ' + @Field_Info + ' , row_number() over(order by ' + @Field_id + ' ' + @Order + ') as rownumber from ' + @Table_info + ') as a where rownumber between ' + convert(varchar(10),@minpage) + ' and ' + convert(varchar(10),@maxpage)
else
set @sql = 'select ' + @Field_Info + ' from (select ' + @Field_Info + ' , row_number() over(order by ' + @Field_id + ' ' + @Order + ') as rownumber from ' + @Table_info + ') as a where rownumber between ' + convert(varchar(10),@minpage) + ' and ' + convert(varchar(10),@maxpage) + ' and ' + @otherwhere
exec(@sql)
END
declare @rcon int
declare @pcon int
exec sp_page 8,73, ' ', 'user_info ', 'id ',0, ' ',@rcon output,@pcon output
这是我修改别人的一个数据库分页的存储过程
- 存储过程--分页
- orcale分页 存储过程分页
- 一个分页存储过程
- 一个分页存储过程
- 存储过程分页代码
- 分页存储过程
- 数据库分页存储过程
- 分页存储过程
- 一个分页存储过程
- 分页 SQLServer存储过程
- 分页 SQLServer存储过程
- 存储过程分页
- SqlServer分页存储过程
- 分页的存储过程
- 通用分页存储过程
- sql 存储过程分页
- 分页存储过程
- 分页存储过程2
- 推荐一个MOSS开发实例程序SharePoint Guidance
- asp.net列表控件在无法确定列的时候,如何绑定
- 回字型输出
- DIY PC
- apache for win2003 中的目录绑定二级域名配置
- 存储过程--分页
- 在加载项中更新 CultureInfo 信息
- oracle 启动和停止命令
- 经验分享交流:常用SQL语句技法
- C#中out 及 ref 区别
- SQLServer中使用javascript脚本验证数据收藏
- 庆生
- 折腾是一个人职业生涯中最为珍贵的财富
- bat批处理文件字符替换一例