zoukankan      html  css  js  c++  java
  • SQL Server 2005的通用分页存储过程


    Create PROCEDURE SP_Page_Exec
    (
    @TblName varchar(255), -- 表名及表集合
    @Fields varchar(1000) ='*', -- 列名及字段集合
    @SortKey varchar(255) ='Id', -- 排序的字段名
    @OrderType varchar(50) = 'ASC', -- 排序类型
    @Orders varchar(2000) = '', -- 排序条件
    @Wheres varchar(2000) = '', -- 查询条件 (不要加 where)
    @PageSize int = 2, -- 页长
    @PageIndex int = 0, -- 当前页,@PageIndex从0开始计算,表示第一页
    @doCount bit = 0 -- 返回记录总数, 0分页,1返回总记录数
    )

    AS

    declare @strSql varchar(2000) --- 主语句
    declare @MyTable varchar(2000) --- 引用表
    declare @PageNum varchar(10)
    declare @size varchar(10)

    Set @PageNum = cast((@PageSize*@PageIndex) as varchar(50))
    Set @size = cast(@PageSize as varchar(50))

    If @Wheres !=''
    Begin
    set @Wheres = ' where '+@Wheres
    End


    Set @MyTable='(SELECT ROW_NUMBER() OVER(ORDER BY '+@SortKey+' '+@OrderType+') AS RowId ,'+@Fields+' FROM '+@TblName + ' ' + @Wheres+')AS MyTable '
    ----- @doCount 为1的情况,计算总记录数 -------------
    IF @doCount != 0
    begin
    set @strSql = 'select count('+@SortKey+') as Total from '+@MyTable
    end
    ------ @doCount 为0的情况,进行分页 ------------
    ELSE
    begin
    set @strSql= 'SELECT TOP '+@size+' * FROM ' +@MyTable+ ' WHERE RowId > '+ @PageNum+ ' ' + @Orders

    end

    ---- 执行存储过程---
    Exec(@strSql)
    常用sql语句大全
    常用SQL语句词典
    常用SQL语句
    常用SQL语句收集
    AspNetPager的使用
    http://hi.baidu.com/peng_c/blog/item/cba4338d4df38910b21bba4b.html

    .net海量数据分页通用存储过程  带例子!!好精华!
  • 相关阅读:
    周末毒鸡汤时间
    MySQL 8.0发布,你熟悉又陌生的Hash Join?
    你可能需要的Kafka面试题与答案整理
    流程控制结构
    视图
    事务
    常用约束
    sql99语法的连接查询
    数据类型
    数据操作语句(DML)
  • 原文地址:https://www.cnblogs.com/barney/p/1171886.html
Copyright © 2011-2022 走看看