zoukankan      html  css  js  c++  java
  • SQL分页存储过程

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    -- =============================================
    -- Author:  Hstar
    -- Create date: 2012年6月24日12:23:08
    -- Description: 通用分页存储过程
    -- Update:2012年8月25日16:26:12(删除了SQL08的语法,让SQL05可用)
    -- =============================================
    ALTER PROCEDURE [dbo].[Hstar_Paging]
     @tblName varchar(100), --表名
     @fldName varchar(255),--主键字段
     @PageSize INT =20,--分页大小                     
     @PageIndex int,--第几页
     @Columns varchar(1000) = '*',--需要得到的字段
     @OrderType bit = 0,--排序的类型 (0为升序,1为降序)
     @strWhere varchar(1000) = '',--查询条件, 不用加where关键字
     @sortColumn varchar(100) = ''--排序的字段名 (即 order by column asc/desc)

    AS
    DECLARE @sortTemp varchar(300),@sql varchar(2000)
    SET @sortTemp=''
    --步骤1、判断是否需要派排序
    IF @sortColumn<>''
    BEGIN
     IF @orderType=0
     BEGIN
      SET @sortTemp=' order by '+@sortColumn+' asc'
     END
     ELSE
     BEGIN
      SET @sortTemp=' order by '+@sortColumn+' desc'
     END
    END     
    --步骤二、判断是否是首页,首页直接查询     
    IF @PageIndex=1--第一页
    BEGIN
     SET @sql='SELECT top '+str(@PageSize)+' '+@Columns+' from '+@tblName+' where '+@strWhere+@sortTemp
    END
    --步骤三、其他页的查询方法,基于row_number方式
    ELSE
    BEGIN
     SET @sql='SELECT '+@Columns+' FROM (SELECT no= row_number() OVER '
     IF @sortTemp=''
     BEGIN
      SET @sql=@sql+'(order by '+@fldName+')'
     END
     ELSE
     BEGIN
      SET @sql=@sql+'('+@sortTemp+')'
     END
     SET @sql=@sql+',* FROM '+@tblName+' WHERE '+@strWhere+' )AS tt where tt.no between '+str(@pageSize*(@PageIndex-1)+1)+' and '+str(@PageSize*@PageIndex)
    END
    exec(@sql)

    比较简陋,在此记录下,有空再修改下。

  • 相关阅读:
    URL
    B/S架构
    SQL查询语句
    SQL-Delete语句
    SQL运算符
    SQL结构查询语言
    SQL数据库数据类型详解
    标准文档流
    CSS
    字体样式
  • 原文地址:https://www.cnblogs.com/humin/p/2656736.html
Copyright © 2011-2022 走看看