zoukankan      html  css  js  c++  java
  • 古老而又实用的存储过程分页代码

    USE [xxxxx]
    GO
    
    /****** Object:  StoredProcedure [dbo].[PROC_DataPaging]    Script Date: 07/12/2012 14:23:06 ******/
    SET ANSI_NULLS ON
    GO
    
    SET QUOTED_IDENTIFIER ON
    GO
    
    CREATE procedure [dbo].[PROC_DataPaging]
        @tbName nvarchar(255),            --表名
        @tbFields nvarchar(1023),        --返回字段
        @OrderField nvarchar(255),        --排序的字段名
        @PageSize int,                    --页尺寸
        @PageIndex int,                    --页码
        @OrderType bit,                    --排序类型,1是升序,0是降序
        @strWHERE nvarchar(1023),        --查询条件
        @Total int output                --返回总记录数
    AS
    
    DECLARE @strSql nvarchar(1023)        --主语句
    DECLARE @strOrder nvarchar(255)        --排序
    DECLARE @strSqlCount nvarchar(511)    --查询记录总数主语句
    DECLARE @strtemp nvarchar(63)        --排序附加语句
    --------------排序--------------------1是降序,0未升序
    IF @OrderType != 0
        BEGIN
            SET @strtemp  = '>(SELECT MAX('
            SET @strOrder = 'ORDER BY ' + @OrderField + ' ASC '
        END
    ELSE
        BEGIN
            SET @strtemp  = '<(SELECT MIN('
            SET @strOrder = 'ORDER BY '+ @OrderField + ' DESC'
        END
    --------------总记录数---------------
    IF @strWHERE !=''
        BEGIN
            SET @strSqlCount = 'SELECT @TotalCout=count(*) FROM ' + @tbName + ' WHERE ' + @strWHERE
        END
    ELSE
        BEGIN
            SET @strSqlCount = 'SELECT @TotalCout=count(*) FROM ' + @tbName
        END
    --------------如果是第一页------------
    IF @PageIndex = 1
        BEGIN
            IF @strWHERE != ''
                BEGIN
                    SET @strSql = 'SELECT TOP' + str(@PageSize)+ ' ' + @tbFields + ' FROM ' + @tbName +' WHERE ' + @strWHERE + ' ' + @strOrder
                END
            ELSE
                BEGIN
                    SET @strSql = 'SELECT TOP' + str(@PageSize)+ ' ' + @tbFields + ' FROM ' + @tbName + ' ' + @strOrder
                END
        END
    ------------第一页之外----------------
    ELSE
        BEGIN
            IF @strWHERE != ''
                BEGIN
                    SET @strSql = 'SELECT TOP ' + str(@PageSize) + ' ' + @tbFields
                        + ' FROM ' + @tbName + ' WHERE '+ @OrderField +' '
                        + @strtemp + ' ' + @OrderField + ') FROM (SELECT TOP'
                        + str((@PageIndex-1)*@PageSize) + ' ' + @OrderField + ' FROM ' + @tbName + ' WHERE '
                        + @strWHERE + ' ' + @strOrder +') AS tb) AND '+ @strWHERE + ' ' + @strOrder
                END
            ELSE
                BEGIN
                    SET @strSql = 'SELECT TOP ' + str(@PageSize) + ' ' + @tbFields
                        + ' FROM ' + @tbName + ' WHERE ' + @OrderField + ' '
                        + @strtemp+ ' ' +@OrderField+ ') FROM (SELECT TOP'
                        + str((@PageIndex-1)*@PageSize) + ' '+ @OrderField +' FROM ' + @tbName
                        + ' '+ @strOrder +') AS tb)'+ @strOrder
                END
        END
    
    exec sp_executesql @strSqlCount, N'@TotalCout int output',@Total output
    exec(@strSql)
    SELECT @strSql AS StrSQL
    SELECT @strSqlCount AS strSqlCount
    GO
  • 相关阅读:
    css3 让一个图片翻转示例代码
    万能清除法
    str_replace 字符串匹配替换 explode 拆分字符串成数组 implode 数组 为字符串 list($month, $day, $year) = split ('[/.-]', $date);
    历年沪深A股、香港H股票数据导入和实时数据更新展示 ---转载
    CSS3生成音频波纹效果加载中动画
    jQuery中Ajax快捷方法之$.getScript()
    jQuery中Ajax快捷方法之$.get()
    ajax 关于IP地址查询的API
    php 拒绝用户输入非法字符
    PHP 字符串函数是 PHP 核心的组成部分。
  • 原文地址:https://www.cnblogs.com/matong/p/2588037.html
Copyright © 2011-2022 走看看