c#中呼叫
///
/// 分頁獲取資料列表
///
public dataset getlist(int pagesize,int pageindex,string strwhere)
;parameters[0].value = "tsys_userrole";
parameters[1].value = "fid";
parameters[2].value = pagesize;
parameters[3].value = pageindex;
parameters[4].value = 0;
parameters[5].value = 0;
parameters[6].value = strwhere;
return dbhelpersql.runprocedure("up_getrecordbypage",parameters,"ds");
}儲存過程如下:
1,------------------------------------
--用途:分頁儲存過程(對有主鍵的表效率極高)
--說明:
------------------------------------
create procedure [dbo].[up_getrecordbypage]
@tblname varchar(255), -- 表名
@fldname varchar(255), -- 主鍵欄位名
@pagesize int = 10, -- 頁尺寸
@pageindex int = 1, -- 頁碼
@isrecount bit = 0, -- 返回記錄總數, 非0 值則返回
@ordertype bit = 0, -- 設定排序型別, 非0 值則降序
@strwhere varchar(1000) = '' -- 查詢條件(注意: 不要加where)
asdeclare @strsql varchar(6000) -- 主語句
declare @strtmp varchar(100) -- 臨時變數(查詢條件過長時可能會出錯,可修改為)
declare @strorder varchar(400) -- 排序型別
if @ordertype != 0
begin
set @strtmp = '<(select min'
set @strorder = ' order by [' + @fldname +'] desc'
endelse
begin
set @strtmp = '>(select max'
set @strorder = ' order by [' + @fldname +'] asc'
endset @strsql = 'select top ' + str(@pagesize) + ' * from ['
+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['
+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['
+ @fldname + '] from [' + @tblname + ']' + @strorder + ') as tbltmp)'
+ @strorder
if @strwhere != ''
set @strsql = 'select top ' + str(@pagesize) + ' * from ['
+ @tblname + '] where [' + @fldname + ']' + @strtmp + '(['
+ @fldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['
+ @fldname + '] from [' + @tblname + '] where ' + @strwhere + ' '
+ @strorder + ') as tbltmp) and ' + @strwhere + ' ' + @strorder
if @pageindex = 1
begin
set @strtmp =''
if @strwhere != ''
set @strtmp = ' where ' + @strwhere
set @strsql = 'select top ' + str(@pagesize) + ' * from ['
+ @tblname + ']' + @strtmp + ' ' + @strorder
endif @isrecount != 0
set @strsql = 'select count(*) as total from [' + @tblname + ']'+' where ' + @strwhere
exec (@strsql)
2,------------------------------------
--用途:支援任意排序的分頁儲存過程
--說明:
------------------------------------
create procedure [dbo].[up_getrecordbypageorder]
@tblname varchar(255), -- 表名
@fldname varchar(255), -- 顯示欄位名
@orderfldname varchar(255), -- 排序欄位名
@statfldname varchar(255), -- 統計欄位名
@pagesize int = 10, -- 頁尺寸
@pageindex int = 1, -- 頁碼
@isrecount bit = 0, -- 返回記錄總數, 非 0 值則返回
@ordertype bit = 0, -- 設定排序型別, 非 0 值則降序
@strwhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where)
asdeclare @strsql varchar(6000) -- 主語句
declare @strtmp varchar(100) -- 臨時變數(查詢條件過長時可能會出錯,可修改100為1000)
declare @strorder varchar(400) -- 排序型別
if @ordertype != 0
begin
set @strtmp = '<(select min'
set @strorder = ' order by [' + @orderfldname +'] desc'
end
else
begin
set @strtmp = '>(select max'
set @strorder = ' order by [' + @orderfldname +'] asc'
endset @strsql = 'select top ' + str(@pagesize) + ' ' + @fldname + ' from ['
+ @tblname + '] where [' + @orderfldname + ']' + @strtmp + '(['
+ @orderfldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['
+ @orderfldname + '] from [' + @tblname + ']' + @strorder + ') as tbltmp)'
+ @strorder
if @strwhere != ''
set @strsql = 'select top ' + str(@pagesize) + ' ' + @fldname + ' from ['
+ @tblname + '] where [' + @orderfldname + ']' + @strtmp + '(['
+ @orderfldname + ']) from (select top ' + str((@pageindex-1)*@pagesize) + ' ['
+ @orderfldname + '] from [' + @tblname + '] where ' + @strwhere + ' '
+ @strorder + ') as tbltmp) and ' + @strwhere + ' ' + @strorder
if @pageindex = 1
begin
set @strtmp = ''
if @strwhere != ''
set @strtmp = ' where ' + @strwhere
set @strsql = 'select top ' + str(@pagesize) + ' ' + @fldname + ' from ['
+ @tblname + ']' + @strtmp + ' ' + @strorder
endif @isrecount != 0
set @strsql = @strsql+' select count(1) as total from [' + @tblname + ']'
if @strwhere!=''
set @strsql = @strsql+' where ' + @strwhere
exec (@strsql)
動軟 mysql 分頁 動軟分頁儲存過程
1,用途 支援任意排序的分頁儲存過程 說明 create procedure dbo up getrecordbypageorder tblname varchar 255 表名 fldname varchar 255 顯示欄位名 orderfldname varchar 255 排序欄位名 sta...
動軟分頁儲存過程
動軟.net 分頁儲存過程up getrecordbypage 2012 03 26 16 03 1,用途 支援任意排序的分頁儲存過程 說明 create procedure dbo up getrecordbypageorder tblname varchar 255 表名 fldname var...
sql 儲存過程分頁
create proc myx prpagerecordset querystr nvarchar 1000 keyfield nvarchar 200 pagesize int,pagenumber int as begin declare sqltext as nvarchar 4000 dec...