多條件分頁儲存過程資料庫寫法

2022-07-20 00:54:11 字數 1323 閱讀 5698

create proc [dbo].[p_paging]

@tablename varchar(8000),          --表名、檢視名

@indexcol varchar(50) = 'id',      --標識列名(如:比如主鍵、標識,推薦使用索引列)

@pagesize int = 10,                --頁面大小

@pageindex int = 0,                --當前頁

@ordercol varchar(100) = 'id desc',--排序 (如:id)

@where varchar(max) = '',         --條件

@columns varchar(500) = '*'        --要顯示的列

asdeclare @sql varchar(max)

declare @sql2 varchar(max)

declare @where2 varchar(max)

if @where <> ''

begin

select @where2 = ' and ' + @where

select @where = ' where ' + @where

endelse

select @where2 = ''

select @sql = 'select top ' + convert(varchar(10),@pagesize) + ' ' + @columns + ' from ' + @tablename

select @sql2 = @sql + @where

select @sql =  @sql + ' where ' + '(' + @indexcol + ' not in (select top ' + convert(varchar(10), @pagesize * @pageindex) + ' ' + @indexcol + ' from ' + @tablename + @where +  ' order by '+ @ordercol +'))'

select @sql = @sql + @where2

select @sql = @sql + ' order by ' + @ordercol

--獲取資料集

exec (@sql)

print @sql

select @sql2 = replace(@sql2,'top ' + convert(varchar(10), @pagesize) + ' ' + @columns, 'count(1)')

--獲取總資料條數

exec(@sql2)

go

儲存過程分頁,按多條件排序 原創

cs頁面呼叫 public int totalpage 0 public int pagecurrent 1 public int pagesize 25 public int rowscount 0 string userid,username public datatable dt new da...

資料庫端分頁儲存過程

近日專案中要用到大批量的資料分頁顯示,而vs2003中的datagrid中的分頁機制是整個的讀出資料到記憶體,再將記憶體中符合分頁條件的資料顯示到頁面,如果資料量達到一定程式會占用大量系統資源,導致整個程式反應遲鈍。因而只好採用在資料庫端分頁的方法,每次只讀出指定的記錄數。create proced...

資料庫非儲存過程分頁

oracle中的分頁 select from select a.rownum rc from 表名 where rownum endrow a where a.rc startrow select a1.from select student.rownum rn from student a1 wh...