/*released date:2007-5-30
procname:up_getrecordbypage
*/--check up_getrecordbypage
if exists (select * from dbo.sysobjects where id = object_id(n'[dbo].[up_getrecordbypage]') and objectproperty(id, n'isprocedure') = 1)
drop procedure [dbo].[up_getrecordbypage]
gocreate proc [dbo].[up_getrecordbypage]
@tblname varchar(255), -- 表名
@fldname varchar(255), -- 排序字段(支援多欄位,建議建索引) 比如 id asc ,addtime desc
@pagesize int = 10, -- 頁尺寸
@pageindex int = 1, -- 頁碼
--@isrecount bit = 0, -- 返回記錄總數, 非 0 值則返回
@totalpages int output ,--輸出引數,返回總頁數
--@ordertype bit = 0, -- 設定排序型別, 非 0 值則降序
@strwhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where)
asbegin
declare @strsql nvarchar(4000)
declare @rowscount int
if ltrim(rtrim(@strwhere))=''
set @strwhere=' 1=1 '
--obtain rowscount
set @strsql='select @totalrecords=count(*) from '+@tblname+' where '+@strwhere
execute sp_executesql @strsql,n'@totalrecords int output ',@rowscount output
select @totalpages=ceiling((@rowscount+0.0)/@pagesize)
if @pageindex<=0
set @pageindex=1
if @pageindex > @totalpages
set @pageindex=@totalpages
set @strsql='select * from (select top (@pageindex*@pagesize) * ,row_number() over(order by '+@fldname+') as rownumber from '+@tblname+' where '+@strwhere+' ) t where t.rownumber>=((@pageindex-1)*@pagesize+1)'
--print @strsql
exec sp_executesql @strsql,n'@pageindex int, @pagesize int',@pageindex,@pagesize
end
@fldname是排序字段不是selectlist欄位【*】,輸入形式 id asc,addtime desc
去掉2個引數ordertype,isrecount。ordertype在@fldname體現,isrecount在原來的儲存過程沒有多大意義。新增了乙個輸出引數@totalpages
strwhere 不用加where
乙個分頁儲存過程
page language c import namespace system.data import namespace system.data.sqlclient 訂單號 服務專案 預訂日期 操作人員 分配狀態 databinder.eval container.dataitem,offerid...
乙個分頁儲存過程
louje 分頁儲存過程 create procedure usp page pagesize int,頁大小 pageno int,頁號 tablename nvarchar 500 表名 keyword nvarchar 20 主鍵 fieldname nvarchar 2000 要顯示的欄位名...
乙個分頁儲存過程
create procedure sp page tb varchar 50 表名 col varchar 50 按該列來進行分頁 coltype int,col 列的型別,0 數字型別,1 字元型別,2 日期時間型別 orderby bit,排序,0 順序,1 倒序 collist varchar...