日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程

發布時間:2024/7/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
通用分頁存儲過程很實用,但畢竟不是全適用于一些環境,譬如我遇到過一種情況,需要先外鏈兩個表,然后再關聯幾個表,總之參數傳遞很煩人,這里不細說了,現在只談實現查詢后,怎么分頁的簡單技巧
1,建立用戶函數
CREATE?? function?? F_xxxx(@ID? nvarchar(36),@Key nvarchar(36),......)
{
......//這里查詢出你需要分頁的所有數據,可以帶參數來查詢
}
建函數的目的是為了整合查詢的數據,主要是可以帶入參數,很方便.
注,函數中沒有exec語句,不可以拼接SQL,不過可以調用存儲過程.
2,建分頁存儲過程,具體框架和說明如下
/**//*080520??by?zjyaoo@live.cn*/??
CREATE?PROCEDURE?dbo.SPCustomPaging
????(
????
@PageSize?int?=15,?--頁面大小
????@PageNumber?int?=1,?--頁碼
????@傳入到函數的參數1?nvarchar(36),?--傳入到函數的參數,這里參數個數根據建的函數來決定
????@傳入到函數的參數2?nvarchar(36),?--傳入到函數的參數,這里參數個數根據建的函數來決定
????@StrWhere?nvarchar(2000)='?AND?1=1'?,?--條件,注:傳入的@StrWhere需要replace.(''','''')處理
????@RecordCount?int?=0??output??--返回總的條數
????)
AS
DECLARE?@strStartRow?int
IF?@PageNumber?<?1
????
SET?@PageNumber?=?1
SET?@strStartRow?=(@PageNumber?-?1)*?@PageSize?+?1??--設置其實頁碼
--
--
DECLARE?@str_Count_SQL?nvarchar(500)?
SET?@str_Count_SQL=?'SELECT?@TotalCount=count(*)?FROM??[F_建立的的函數]('''+@函數參數1+''','''+@函數參數2+''')?Where?1=1?'??+?@StrWhere??--1=1,用于外接條件
EXEC?sp_executesql?@str_Count_SQL,N'@TotalCount?int=0?output',@RecordCount?output??--獲取總的條數
Declare?@Sql?nvarchar(1000)
set?@Sql?=
'DECLARE??@SortColumn??nvarchar(255)??--建幾個臨時變量
DECLARE??@SortNullValue??nvarchar(255)?
DECLARE??@PKStartValue??nvarchar(255)??
SET?@SortNullValue?=?CAST(
''''?as?int)
SET?ROWCOUNT??
'+??cast(@strStartRow???as??nvarchar(5))??+'???--整數轉為字符
SELECT?@SortColumn=?isNull([函數中的分類字段]?,@SortNullValue),?@PKStartValue?=?[函數中的關鍵字段]????FROM???[F_建立的的函數](
'''+@函數參數1+''','''+@函數參數2+''')???Where?1=1???'+@StrWhere?+'??ORDER?BY?[函數中的分類字段],?[再加個函數中的關鍵字段]?Desc?
SET?ROWCOUNT???
'+?cast(@PageSize???as??nvarchar(5))?+'????--整數轉為字符
SELECT?*?FROM??F_ManufacturerDiscount(
'''+@OrgID+''')?
?WHERE??(isNull([函數中的分類字段],@SortNullValue)>@SortColumn?or?(isNull([函數中的分類字段],@SortNullValue)=@SortColumn?and?[函數中的關鍵字段]<=@PKStartValue))??
'+@StrWhere?+'??ORDER?BY?[函數中的分類字段],[函數中的關鍵字段]?Desc
RETURN
'
Exec?(@Sql)
GO

轉載于:https://www.cnblogs.com/zjy/archive/2008/05/20/1203589.html

總結

以上是生活随笔為你收集整理的从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。