• sql2000 下 分页存储过程(通用型)


    --名称:分页存储过程(sql2000通用型)
    --
    使用示例 
    --
      Declare @start int
    --
      EXEC  dbo.sp_page '*','s_admin where iid>=7','order by logintimes desc',30,1, @start out
    --  print @start
    --
    注意 
    --
    目前还没有对输入的参数进行严格的验证
    --
    默认为输入都是合法有效的

    ALTER PROCEDURE dbo.sp_page
    (
     @fields varchar(800)    --SELECT 后面 FROM 前面 的 字段 不用包含SELECT
    ,@sqlFrom varchar(800)   --FROM 后面 的 字段 不包含FROM
    ,@sqlOrderBy varchar(800-- Order By 后面的字符,包括Order By 
    ,@pageSize int -- 每页数据行数
    ,@pageIndex int --要转到的页码
    ,@records int OUTPUT  -- 当前查询条件下的总记录数
    )
     
    AS
    BEGIN

    Declare @sqlStr nvarchar(800)

    -- 取得总记录数
    set @sqlStr='select @records = count(*)  from ' + @sqlFrom
    --执行@sql中的语句
    exec sp_executesql @sqlStr
      ,N'@records varchar(1000) out'  --表示@sqlStr中的语句包含了一个输出参数
      ,@records out                   --和调用存储过程差不多,指定输出参数值

    -- 根据每页数据行数 和 要转到的页码 得到 数据起止点
    Declare @start int
    Declare @end int
    set @end = @pageSize * @pageIndex
    set @start = @pageSize * (@pageIndex - 1+ 1

    -- 临时表名称 可随机命名
    Declare @tmpTable varchar(12)
    SET @tmpTable ='#tmp'+ left(newid(),8)


    -- 创建数据源到临时表
    SELECT @sqlStr = 'SELECT Identity(int,1,1) AS RowIndex, * INTO  '+ @tmpTable 
    SELECT @sqlStr = @sqlStr + ' FROM (SELECT TOP ' + Convert(char,@end )+ @fields + ' FROM ' + rtrim(@sqlFrom+ ' '+ rtrim(@sqlOrderBy+ ') A'
    -- 查询临时表 得到所需要的数据
    SELECT @sqlStr = @sqlStr + ' '+'SELECT '+ rtrim(@fields+' FROM ' + @tmpTable 
    SELECT @sqlStr = @sqlStr + ' WHERE  RowIndex BETWEEN ' + Convert(char,@start+ ' AND ' + Convert(char,@end)
    -- 删除临时表
    SELECT @sqlStr = @sqlStr + ' '+'DROP TABLE '+@tmpTable
    EXEC (@sqlStr)

    END

        RETURN
  • 相关阅读:
    遇见SQL(2)
    遇见SQL(1)
    JAVA自学笔记(10)—Stream流、方法引用
    JAVA自学笔记(9)——网络通信、函数式接口
    JAVA自学笔记(7)—文件
    JAVA自学笔记(6)—异常、线程、函数式编程
    Python--模块Module
    Python--软件目录结构
    Python--迭代器
    Python--生成器
  • 原文地址:https://www.cnblogs.com/chengulv/p/2224359.html
Copyright © 2020-2023  润新知