zoukankan      html  css  js  c++  java
  • 最效率分页查询

    USE [tablename]
    GO
    /****** Object:  StoredProcedure [dbo].[paginate]    Script Date: 05/12/2013 17:35:10 ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:      <Jeremy Menethil>
    -- Create date: <2013-04-03>
    -- Description: <Best Paginate>
    -- =============================================
    ALTER PROCEDURE [dbo].[paginate]
        -- Add the parameters for the stored procedure here
    @tbName nvarchar(100),
    @items nvarchar(500),
    @where nvarchar(100),
    @orderBy nvarchar(100),
    @orderType int,
    @pageSize int,
    @pageCurrent int=1 output,
    @pageCount int output,
    @recordCount int output
    AS
    declare @strSql nvarchar(1000)
    declare @strOrderType nvarchar(50)
    declare @indexA int
    declare @indexB int
    declare @ab int
    declare @str nvarchar(100)
    BEGIN
     
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;
         
        --------Set pageSize
        if @pageSize<1
        Begin
            set @pageSize=1
        END
        ------------------------------
        --------Set pageCureent
        if @pageCurrent<1
        Begin
            set @pageCurrent=1
        END
     
        if @pageCurrent>@pageCount
        Begin
            set @pageCurrent=@pageCount
        End
        ------------------------------
         
        --------Set ordertype  
        if @orderType=1
        Begin
            set @strOrderType=' asc'
        End
        else
        Begin
            set @strOrderType=' desc'
        End
        ------------------------------
     
        --------Set Where
        if @where!=''
        Begin
            set @where=' where '+@where
        End
     
        set @str='select @recordCount=COUNT(*) from '+@tbName+@where
        exec sp_executesql @str,N'@recordCount int output,@tbName nvarchar(100)',@recordCount output,@tbName
     
     
        --------Set pageCount
        set @pageCount=@recordCount/@pageSize
        if @recordCount%@pageSize>0
        begin
            set @pageCount=@pageCount+1
        end
        ------------------------------
     
     
        --------Execute Sql
        set @indexA=(@pageCurrent-1)*@pageSize
        set @indexB=@pageCurrent*@pageSize
        set @strSql='select '+@items+' from (select ROW_NUMBER() over(order by '+@orderBy+@strOrderType+') as '
            +'rowNum,* from '+@tbName+@where+') as tbTmp where rowNum >'
            +str(@indexA)+' and rowNum <='+str(@indexB)
        -- Insert statements for procedure here
        exec(@strSql)
     
    END

  • 相关阅读:
    ubuntu下安装chromium浏览器adobe flash插件
    Eclipse运行时提示failed to create the java virtual machine 解决方法
    64位Ubuntu下不能生成R.java文件的问题(Android)
    Ubuntu下Eclipse的中文支持(GBK)
    Android工程编译错误:The project cannot be built until build path errors are resolved
    Apache POI
    ubuntu下安装Google拼音输入法
    [导入]ThinkPHP新手推荐学习路线
    [导入]示例Blog发表日志的程序流程(总结)
    [导入][视频] ThinkPHP入门第一步
  • 原文地址:https://www.cnblogs.com/jrmy/p/3131824.html
Copyright © 2011-2022 走看看