基于Sql Server通用分頁存儲(chǔ)過程的解決方法_Mssql數(shù)據(jù)庫教程
推薦:關(guān)于sql server批量插入和更新的兩種解決方案對于sql 來說操作集合類型(一行一行)是比較麻煩的一件事,而一般業(yè)務(wù)邏輯復(fù)雜的系統(tǒng)或項(xiàng)目都會(huì)涉及到集合遍歷的問題,通常一些人就想到用游標(biāo),這里我列出了兩種方案,供大家參考
sql server2000分頁方式很多,效率嗎 當(dāng)?shù)竭_(dá)10萬級以上就有些吃力了,這里暫時(shí)不例出來了
sql server2005以上就有了row_number 也是一大進(jìn)步,詳情如下參考
Sql Server2005通用分頁存儲(chǔ)過程
CREATE PROCEDURE [dbo].[Common_GetPagedList]
(
@TableName nvarchar(100), --表名
@ColumnNames nvarchar(1000) = '*', --字段名集合(全部字段為*,其它逗號分隔)
@OrderClause nvarchar(1000), --排序從句(不包含order by)
@WhereClause nvarchar(1000) =N' 1=1 ', --條件從句(不包含where)
@PageSize int = 0, --每頁記錄數(shù)(0為所有)
@PageIndex int = 1, --頁索引(從1開始)
@TotalRecord int output --返回總記錄數(shù)
)
AS
BEGIN
if (@ColumnNames is null or @ColumnNames='') set @ColumnNames=' * '
if (@WhereClause is null or @WhereClause='') set @WhereClause=' 1=1 '
if (@OrderClause is null or @OrderClause='') set @OrderClause=' Id desc '
--處理開始點(diǎn)和結(jié)束點(diǎn)
Declare @StartRecord int;
Declare @EndRecord int;
Declare @TotalCountSql nvarchar(1200);
Declare @SqlString nvarchar(4000);
--統(tǒng)計(jì)記錄
if(@TotalRecord is null OR @TotalRecord>=0)
begin
SET @TotalCountSql= N'select @TotalRecord = count(*) from ' + @TableName +' where '+@WhereClause;
--select @TotalCountSql
EXEC sp_executesql @totalCountSql,N'@TotalRecord int out',@TotalRecord output;--返回總記錄數(shù)
end
if @PageSize>0
begin
if @PageIndex<1 set @PageIndex=1
set @StartRecord = (@PageIndex-1)*@PageSize + 1
set @EndRecord = @StartRecord + @PageSize - 1
set @SqlString = N'select row_number() over (order by '+ @OrderClause +') as rowId,'+@ColumnNames+' from '+ @TableName+' where '+@WhereClause;
set @SqlString ='select * from (' + @SqlString + ') as t where rowId between ' + ltrim(str(@StartRecord)) + ' and ' + ltrim(str(@EndRecord));
end
else
begin
set @SqlString='select '+@ColumnNames+' from '+ @TableName+' where '+@WhereClause +' order by '+@OrderClause
end
--select @SqlString
Exec(@SqlString)
END
分享:SQL中的ISNULL函數(shù)使用介紹SQL中有多種多樣的函數(shù),下面將為您介紹SQL中的ISNULL函數(shù),包括其語法、注釋、返回類型等,供您參考,希望對您學(xué)習(xí)SQL能夠有所幫助
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- 配置SQL SERVER合并復(fù)制之(三)配置Distributor
- 談值得收藏的SQL時(shí)間函數(shù)
- SQL Server日志文件損壞嚴(yán)重的問題解決方法
- 怎樣巧妙規(guī)劃使用Oracle數(shù)據(jù)空間
- 怎樣用SQL Server事件探查器創(chuàng)建跟蹤
- sql2005 日志清理 SQL2005壓縮清除日志的方法
- 如何在應(yīng)用環(huán)境中構(gòu)造最優(yōu)的數(shù)據(jù)庫模式
- SQL Server與Oracle并行訪問的本質(zhì)區(qū)別
- 解讀經(jīng)典SQL語句大全
- sql存儲(chǔ)過程的使用和介紹
猜你也喜歡看這些
- 解析:內(nèi)聯(lián),左外聯(lián),右外聯(lián),全連接,交叉連接的區(qū)別
- mysql登錄遇到ERROR 1045問題解決方法
- SQL字符型字段按數(shù)字型字段排序?qū)崿F(xiàn)方法
- MySQL筆記之運(yùn)算符使用詳解
- mysql常用設(shè)置:字符集編碼、自動(dòng)完成(自動(dòng)提示)、監(jiān)聽外網(wǎng)ip
- MySQL數(shù)據(jù)庫備份和還原的常用命令
- MySQL筆記之基本查詢的應(yīng)用詳解
- 關(guān)于數(shù)據(jù)庫中保留小數(shù)位的問題
- MySQL筆記之函數(shù)查詢的使用
- mysql密碼過期導(dǎo)致連接不上mysql
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-基于Sql Server通用分頁存儲(chǔ)過程的解決方法
。