分页|数据|显示
-- 获取指定页的数据
CREATE PROCEDURE GetRecordFromPage
    tblName      varchar(255),       -- 表名
    fldName      varchar(255),       -- 字段名
    PageSize     int = 10,           -- 页尺寸
    PageIndex    int = 1,            -- 页码
    IsCount      bit = 0,            -- 返回记录总数, 非 0 值则返回
    OrderType    bit = 0,            -- 设置排序类型, 非 0 值则降序
    strWhere     varchar(1000) = ''  -- 查询条件 (注意: 不要加 where)
AS
declare strSQL   varchar(6000)       -- 主语句
declare strTmp   varchar(100)        -- 临时变量
declare strOrder varchar(400)        -- 排序类型
if OrderType != 0
begin
    set strTmp = "<(select min"
    set strOrder = " order by [" + fldName +"] desc"
end
else
begin
    set strTmp = ">(select max"
    set strOrder = " order by [" + fldName +"] asc"
end
set strSQL = "select top " + str(PageSize) + " * from ["
    + tblName + "] where [" + fldName + "]" + strTmp + "(["
    + fldName + "]) from (select top " + str((PageIndex-1)*PageSize) + " ["
    + fldName + "] from [" + tblName + "]" + strOrder + ") as tblTmp)"
    + strOrder
if strWhere != ''
    set strSQL = "select top " + str(PageSize) + " * from ["
        + tblName + "] where [" + fldName + "]" + strTmp + "(["
        + fldName + "]) from (select top " + str((PageIndex-1)*PageSize) + " ["
        + fldName + "] from [" + tblName + "] where " + strWhere + " "
        + strOrder + ") as tblTmp) and " + strWhere + " " + strOrder
if PageIndex = 1
begin
    set strTmp = ""
    if strWhere != ''
        set strTmp = " where " + strWhere
    set strSQL = "select top " + str(PageSize) + " * from ["
        + tblName + "]" + strTmp + " " + strOrder
end
if IsCount != 0
    set strSQL = "select count(*) as Total from [" + tblName + "]"
exec (strSQL)
GO
 
  
 
 
  
