使用存儲過程獲取分頁數據的Sql代碼
CREATE PROCEDURE [dbo].[PR_ListPage]
@tblName varchar(255), -- 表名
@OrderName varchar(255), -- 排序字段名
@Fields varchar(1000) = ' * ', -- 返回的字段的集合
@PageSize int = 20, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@IsCount bit = 0, -- 返回記錄總數, 非 0 值則返回
@StrOrders varchar(300) = '', -- 設置排序規則
@strWhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(1000) -- 主語句
declare @strTmp varchar(300) -- 臨時變量
declare @StrOrder varchar(300) -- 臨時變量
if @StrOrders != ''
begin
set @StrOrder=' order by ' + @StrOrders
end
set @strTmp = 'not in (select top ' + str(@PageSize-1)
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+' from ' + @tblName + ' where ' + @OrderName + ' not in (select top ' + str((@PageIndex-1)*@PageSize) + ' ' + @OrderName + ' from ' + @tblName + ' ' + @strOrder + ')' + @strOrder
if @strWhere != ''
begin
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+' from ' + @tblName + ' where ' + @OrderName + ' not in (select top ' + str((@PageIndex-1)*@PageSize) + ' ' + @OrderName + ' from ' + @tblName + ' where (' + @strWhere + ') ' + @strOrder + ') and (' + @strWhere + ') ' + @strOrder
end
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+ ' from ' + @tblName + ' ' + @strTmp + ' ' + @strOrder
end
if @iscount !=0
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select count(*) as Total from ' + @tblName + ' '+ @strTmp
end
exec (@strSQL)
@tblName varchar(255), -- 表名
@OrderName varchar(255), -- 排序字段名
@Fields varchar(1000) = ' * ', -- 返回的字段的集合
@PageSize int = 20, -- 頁尺寸
@PageIndex int = 1, -- 頁碼
@IsCount bit = 0, -- 返回記錄總數, 非 0 值則返回
@StrOrders varchar(300) = '', -- 設置排序規則
@strWhere varchar(1000) = '' -- 查詢條件 (注意: 不要加 where)
AS
declare @strSQL varchar(1000) -- 主語句
declare @strTmp varchar(300) -- 臨時變量
declare @StrOrder varchar(300) -- 臨時變量
if @StrOrders != ''
begin
set @StrOrder=' order by ' + @StrOrders
end
set @strTmp = 'not in (select top ' + str(@PageSize-1)
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+' from ' + @tblName + ' where ' + @OrderName + ' not in (select top ' + str((@PageIndex-1)*@PageSize) + ' ' + @OrderName + ' from ' + @tblName + ' ' + @strOrder + ')' + @strOrder
if @strWhere != ''
begin
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+' from ' + @tblName + ' where ' + @OrderName + ' not in (select top ' + str((@PageIndex-1)*@PageSize) + ' ' + @OrderName + ' from ' + @tblName + ' where (' + @strWhere + ') ' + @strOrder + ') and (' + @strWhere + ') ' + @strOrder
end
if @PageIndex = 1
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select top ' + str(@PageSize) + ' ' + @Fields+ ' from ' + @tblName + ' ' + @strTmp + ' ' + @strOrder
end
if @iscount !=0
begin
set @strTmp = ''
if @strWhere != ''
set @strTmp = ' where (' + @strWhere + ')'
set @strSQL = 'select count(*) as Total from ' + @tblName + ' '+ @strTmp
end
exec (@strSQL)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.