create
PROCEDURE
[
dbo
]
.
[
Pro_A_CommGetRecordByPage
]
@tblName varchar ( 255 ), -- 表名
@talFldName varchar ( 500 ) = ' * ' , -- 表內部所有的欄位名
@fldName varchar ( 255 ), -- 主键字段名
@PageSize int = 10 , -- 页尺寸
@PageIndex nvarchar ( 10 ) = ' 1 ' , -- 页码
@IsReCount bit = 0 , -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0 , -- 设置排序类型, 非 0 值则降序
@strWhere varchar ( 1000 ) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar ( 7000 ) -- 主语句
declare @strTmp varchar ( 1000 ) -- 临时变量
declare @strOrder varchar ( 400 ) -- 排序类型
if @OrderType != 0 -- 根據OrderType類型決定排序號的方式
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 ) + ' ' + @talFldName + ' from [ ' -- 根據where的條件是否為空添加條件
+ @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 ) + ' ' + @talFldName + ' from [ '
+ @tblName + ' ] where [ ' + @fldName + ' ] ' + @strTmp + ' ([ '
+ @fldName + ' ]) from (select top ' + str (( @PageIndex - 1 ) * @PageSize ) + ' [ '
+ @fldName + ' ] from [ ' + @tblName + ' ] where 1=1 ' + @strWhere + ' '
+ @strOrder + ' ) as tblTmp) and 1=1 ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where 1=1 ' + @strWhere
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @talFldName + ' from [ '
+ @tblName + ' ] ' + @strTmp + ' ' + @strOrder
end
exec ( @strSQL )
@tblName varchar ( 255 ), -- 表名
@talFldName varchar ( 500 ) = ' * ' , -- 表內部所有的欄位名
@fldName varchar ( 255 ), -- 主键字段名
@PageSize int = 10 , -- 页尺寸
@PageIndex nvarchar ( 10 ) = ' 1 ' , -- 页码
@IsReCount bit = 0 , -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0 , -- 设置排序类型, 非 0 值则降序
@strWhere varchar ( 1000 ) = '' -- 查询条件 (注意: 不要加 where)
AS
declare @strSQL varchar ( 7000 ) -- 主语句
declare @strTmp varchar ( 1000 ) -- 临时变量
declare @strOrder varchar ( 400 ) -- 排序类型
if @OrderType != 0 -- 根據OrderType類型決定排序號的方式
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 ) + ' ' + @talFldName + ' from [ ' -- 根據where的條件是否為空添加條件
+ @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 ) + ' ' + @talFldName + ' from [ '
+ @tblName + ' ] where [ ' + @fldName + ' ] ' + @strTmp + ' ([ '
+ @fldName + ' ]) from (select top ' + str (( @PageIndex - 1 ) * @PageSize ) + ' [ '
+ @fldName + ' ] from [ ' + @tblName + ' ] where 1=1 ' + @strWhere + ' '
+ @strOrder + ' ) as tblTmp) and 1=1 ' + @strWhere + ' ' + @strOrder
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where 1=1 ' + @strWhere
set @strSQL = ' select top ' + str ( @PageSize ) + ' ' + @talFldName + ' from [ '
+ @tblName + ' ] ' + @strTmp + ' ' + @strOrder
end
exec ( @strSQL )