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...