zoukankan      html  css  js  c++  java
  • SqlServer 分页查询语句存储过程

    CREATE PROCEDURE  [dbo].[Proc_SqlPageByRownumber]
    (
        @tbName VARCHAR(2000),            --表名
        @tbGetFields VARCHAR(1000)= '*',--返回字段
        @OrderfldName VARCHAR(255),        --排序的字段名
        @PageSize INT=20,               --页尺寸
        @PageIndex INT=1,               --页码
        @OrderType bit = 0,                --0升序,非0降序
        @strWhere VARCHAR(1000)='',     --查询条件
        @TotalCount INT OUTPUT            --返回总记录数
    )
    AS
    BEGIN
        DECLARE @strSql VARCHAR(5000)    --主语句
        DECLARE @strSqlCount NVARCHAR(4000)--查询记录总数主语句
        DECLARE @strOrder VARCHAR(300) -- 排序类型
    
        --------------总记录数---------------
        IF ISNULL(@strWhere,'') <>'' 
             SET @strSqlCount='Select @TotalCout=count(*) from  ' + @tbName + ' where 1=1 '+ @strWhere
        ELSE SET @strSqlCount='Select @TotalCout=count(*) from  ' + @tbName
        print 1
        exec sp_executesql @strSqlCount,N'@TotalCout int output',@TotalCount output
        --------------分页------------
        IF @PageIndex <= 0 SET @PageIndex = 1
    print 2
        IF(@OrderType<>0) SET @strOrder=' ORDER BY '+@OrderfldName+' DESC '
        ELSE SET @strOrder=' ORDER BY '+@OrderfldName+' ASC '
    print 3
        SET @strSql='SELECT *,'+CONVERT(nvarchar(10),@TotalCount)+' as TotalCount '+' FROM 
        (SELECT ROW_NUMBER() OVER('+@strOrder+') RowNo,'+ @tbGetFields+' FROM ' + @tbName + ' WHERE 1=1 ' + @strWhere+' ) tb 
        WHERE tb.RowNo BETWEEN '+str((@PageIndex-1)*@PageSize+1)+' AND ' +str(@PageIndex*@PageSize)
        print @strSql
        exec(@strSql)
    END
    
    GO
  • 相关阅读:
    小球下落
    生成1~n的排列
    hdu1871无题
    android本地定时通知
    php 5.3起弃用session_register
    centos 6.3 编译安装 nginx +mysql + php
    skynet网络库socketserver
    mac下通过docker搭建LEMP环境
    Git操作
    iOS本地通知
  • 原文地址:https://www.cnblogs.com/zldqpm/p/11911964.html
Copyright © 2011-2022 走看看