ALTER
PROCEDURE
news_Showlist
(
@tblName varchar ( 255 ), -- 表名
@strGetFields varchar ( 1000 ), -- 需要返回的列
@fldName varchar ( 255 ), -- 排序的字段名
@PageSize int , -- 页尺寸
@PageIndex int , -- 页码
@strWhere varchar ( 1500 ), -- 查询条件(注意: 不要加where)
@Sort varchar ( 255 ) -- 排序的方法
)
AS
declare @strSQL varchar ( 5000 ) -- 主语句
declare @strTmp varchar ( 110 ) -- 临时变量
declare @strOrder varchar ( 400 ) -- 排序类型
if @Sort = ' desc '
begin
set @strTmp = ' <(select min '
set @strOrder = ' order by ' + @fldName + ' desc '
-- 如果@OrderType不是,就执行降序,这句很重要!
end
else
begin
set @strTmp = ' >(select max '
set @strOrder = ' order by ' + @fldName + ' asc '
end
if @PageIndex = 1
begin
if @strWhere != ''
begin
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @strGetFields + ' from ' + @tblName
+ ' where ' + @strWhere + ' ' + @strOrder
end
else
begin
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @strGetFields + ' from ' + @tblName
+ ' ' + @strOrder
end
-- 如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
-- 以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @strGetFields + ' 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 ) + ' ' + @strGetFields + ' from '
+ @tblName + ' where ' + @fldName + '' + @strTmp + ' ( ' + @fldName + ' ) from
(select top ' + str (( @PageIndex - 1 ) * @PageSize ) + ' ' + @fldName + ' from '
+ @tblName + ' where ' + @strWhere + ' ' + @strOrder + ' ) as tblTmp)
and ' + @strWhere + ' ' + @strOrder
end
exec ( @strSQL )
RETURN
(
@tblName varchar ( 255 ), -- 表名
@strGetFields varchar ( 1000 ), -- 需要返回的列
@fldName varchar ( 255 ), -- 排序的字段名
@PageSize int , -- 页尺寸
@PageIndex int , -- 页码
@strWhere varchar ( 1500 ), -- 查询条件(注意: 不要加where)
@Sort varchar ( 255 ) -- 排序的方法
)
AS
declare @strSQL varchar ( 5000 ) -- 主语句
declare @strTmp varchar ( 110 ) -- 临时变量
declare @strOrder varchar ( 400 ) -- 排序类型
if @Sort = ' desc '
begin
set @strTmp = ' <(select min '
set @strOrder = ' order by ' + @fldName + ' desc '
-- 如果@OrderType不是,就执行降序,这句很重要!
end
else
begin
set @strTmp = ' >(select max '
set @strOrder = ' order by ' + @fldName + ' asc '
end
if @PageIndex = 1
begin
if @strWhere != ''
begin
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @strGetFields + ' from ' + @tblName
+ ' where ' + @strWhere + ' ' + @strOrder
end
else
begin
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @strGetFields + ' from ' + @tblName
+ ' ' + @strOrder
end
-- 如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
-- 以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @strGetFields + ' 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 ) + ' ' + @strGetFields + ' from '
+ @tblName + ' where ' + @fldName + '' + @strTmp + ' ( ' + @fldName + ' ) from
(select top ' + str (( @PageIndex - 1 ) * @PageSize ) + ' ' + @fldName + ' from '
+ @tblName + ' where ' + @strWhere + ' ' + @strOrder + ' ) as tblTmp)
and ' + @strWhere + ' ' + @strOrder
end
exec ( @strSQL )
RETURN