-- 獲取指定頁(yè)的數(shù)據(jù)
create procedure getrecordfrompage
@tblname varchar(255), -- 表名
@fldname varchar(255), -- 字段名
@pagesize int = 10, -- 頁(yè)尺寸
@pageindex int = 1, -- 頁(yè)碼
@iscount bit = 0, -- 返回記錄總數(shù), 非 0 值則返回
@ordertype bit = 0, -- 設(shè)置排序類型, 非 0 值則降序
@strwhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where)
as
declare @strsql varchar(6000) -- 主語(yǔ)句
declare @strtmp varchar(100) -- 臨時(shí)變量
declare @strorder varchar(400) -- 排序類型
if @ordertype != 0
begin
set @strtmp = "<(select min"
set @strorder = " order by [" + @fldname +"] desc"
end
else
begin
set @strtmp = ">(select max"
set @strorder = " order by [" + @fldname +"] asc"
end
set @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
end
if @iscount != 0
set @strsql = "select count(*) as total from [" + @tblname + "]"
exec (@strsql)
go
|
新聞熱點(diǎn)
疑難解答
圖片精選