一個(gè)分頁(yè)存儲(chǔ)過(guò)程代碼
------------------------------------
--用途:分頁(yè)存儲(chǔ)過(guò)程(對(duì)有主鍵的表效率極高)
--說(shuō)明:
------------------------------------
ALTER PROCEDURE [UP_GetRecordByPage]
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 主鍵字段名
@PageSize int = 10, -- 頁(yè)尺寸
@PageIndex int = 1, -- 頁(yè)碼
@IsReCount 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 @IsReCount != 0
set @strSQL = 'select count(*) as Total from [' + @tblName + ']'+' where ' + @strWhere
exec (@strSQL)
相關(guān)文章
SQL Server 在分頁(yè)獲取數(shù)據(jù)的同時(shí)獲取到總記錄數(shù)
本文通過(guò)兩種方法給大家介紹SQL Server 在分頁(yè)獲取數(shù)據(jù)的同時(shí)獲取到總記錄數(shù),感興趣的朋友跟隨腳本之家小編一起學(xué)習(xí)吧2018-05-05sql多表行轉(zhuǎn)列、級(jí)聯(lián)行轉(zhuǎn)列示例代碼
這篇文章主要介紹了sql多表行轉(zhuǎn)列、級(jí)聯(lián)行轉(zhuǎn)列示例代碼,需要的朋友可以參考下2014-03-03SQL Server 作業(yè)的備份(備份作業(yè)非備份數(shù)據(jù)庫(kù))
我的方法是把作業(yè)導(dǎo)出成文件備份起來(lái),因?yàn)楫?dāng)你服務(wù)器維護(hù)的多了的時(shí)候很多你的作業(yè) 就很成問(wèn)題,很麻煩2012-06-06delete from 表名與truncate table 表名區(qū)別
delete from 表名與truncate table 表名區(qū)別,選擇適合我們的刪除數(shù)據(jù)庫(kù)數(shù)據(jù)的方法2012-10-10SQL Server 壓縮日志與減少SQL Server 文件大小的方法
這篇文章主要為大家描述的是實(shí)現(xiàn)SQL Server 壓縮日志與SQL Server 文件大小的實(shí)際操作步驟,在此實(shí)際操作中我們要按步驟一步一步的進(jìn)行,未進(jìn)行前面的步驟時(shí),請(qǐng)不要做后面的步驟,以免損壞你的數(shù)據(jù)庫(kù)2014-07-07基于SQL Server中如何比較兩個(gè)表的各組數(shù)據(jù) 圖解說(shuō)明
本篇文章小編為大家介紹,基于SQL Server中如何比較兩個(gè)表的各組數(shù)據(jù) 圖解說(shuō)明。需要的朋友參考下2013-04-04sqlserver只有MDF文件恢復(fù)數(shù)據(jù)庫(kù)的方法
因?yàn)橹挥衜df文件,想恢復(fù)數(shù)據(jù)庫(kù),大家可以用下面的代碼先測(cè)試2008-10-10詳解SQL Server數(shù)據(jù)庫(kù)狀態(tài)和文件狀態(tài)
本文通過(guò)實(shí)例給大家詳解sqlserver數(shù)據(jù)庫(kù)狀態(tài) (database states) 和文件狀態(tài) (database states),非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧2017-09-09sqlserver 快速生成漢字的首拼字母的函數(shù)(經(jīng)典)
經(jīng)常要對(duì)姓名按拼音搜索,所以需要做如下函數(shù)來(lái)快速獲取首拼,需要的朋友可以參考下2012-05-05