亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

字符串緩存實現的通用分頁存儲過程.sql

系統 2550 0

CREATE PROC sp_PageView
@tbname???? sysname,?????????? ?--要分頁顯示的表名
@FieldKey?? sysname,?????????? ?--用于定位記錄的主鍵(惟一鍵)字段,只能是單個字段
@PageCurrent int=1,???????????? ?--要顯示的頁碼
@PageSize?? int=10,??????????? ?--每頁的大小(記錄數)
@FieldShow? nvarchar(1000)='',? ?--以逗號分隔的要顯示的字段列表,如果不指定,則顯示所有字段
@FieldOrder? nvarchar(1000)='', ?--以逗號分隔的排序字段列表,可以指定在字段后面指定DESC/ASC
????????????????????????????????????????? 用于指定排序順序
@Where???? nvarchar(1000)='',? ?--查詢條件
@PageCount? int OUTPUT??????? ?--總頁數
AS
DECLARE @sql nvarchar(4000)
SET NOCOUNT ON
--檢查對象是否有效
IF OBJECT_ID(@tbname) IS NULL
BEGIN
?RAISERROR(N'對象"%s"不存在',1,16,@tbname)
?RETURN
END
IF OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTable')=0
?AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsView')=0
?AND OBJECTPROPERTY(OBJECT_ID(@tbname),N'IsTableFunction')=0
BEGIN
?RAISERROR(N'"%s"不是表、視圖或者表值函數',1,16,@tbname)
?RETURN
END

--分頁字段檢查
IF ISNULL(@FieldKey,N'')=''
BEGIN
?RAISERROR(N'分頁處理需要主鍵(或者惟一鍵)',1,16)
?RETURN
END

--其他參數檢查及規范
IF ISNULL(@PageCurrent,0)<1 SET @PageCurrent=1
IF ISNULL(@PageSize,0)<1 SET @PageSize=10
IF ISNULL(@FieldShow,N'')=N'' SET @FieldShow=N'*'
IF ISNULL(@FieldOrder,N'')=N''
?SET @FieldOrder=N''
ELSE
?SET @FieldOrder=N'ORDER BY '+LTRIM(@FieldOrder)
IF ISNULL(@Where,N'')=N''
?SET @Where=N''
ELSE
?SET @Where=N'WHERE ( '+@Where+N')'

--如果@PageCount為NULL值,則計算總頁數(這樣設計可以只在第一次計算總頁數,以后調用時,把總頁數傳回給存儲過程,避免再次計算總頁數,對于不想計算總頁數的處理而言,可以給@PageCount賦值)
IF @PageCount IS NULL
BEGIN
?SET @sql=N'SELECT @PageCount=COUNT(*)'
??+N' FROM '+@tbname
??+N' '+@Where
?EXEC sp_executesql @sql,N'@PageCount int OUTPUT',@PageCount OUTPUT
?SET @PageCount=(@PageCount+@PageSize-1)/@PageSize
END

--計算分頁顯示的TOPN值
DECLARE @TopN varchar(20),@TopN1 varchar(20)
SELECT @TopN=@PageSize,
?@TopN1=@PageCurrent*@PageSize?

--第一頁直接顯示
IF @PageCurrent=1
?EXEC(N'SELECT TOP '+@TopN
??+N' '+@FieldShow
??+N' FROM '+@tbname
??+N' '+@Where
??+N' '+@FieldOrder )
ELSE
BEGIN
?SELECT @PageCurrent=@TopN1,
??@sql=N'SELECT @n=@n-1,@s=CASE WHEN @n< '+@TopN
???+N' THEN @s+N'',''+QUOTENAME(RTRIM(CAST( '+@FieldKey
???+N' as varchar(8000))),N'''''''') ELSE N'''' END FROM '+@tbname
???+N' '+@Where
???+N' '+@FieldOrder
?SET ROWCOUNT @PageCurrent
?EXEC sp_executesql @sql,
?? N'@n int,@s nvarchar(4000) OUTPUT',
??@PageCurrent,@sql OUTPUT
?SET ROWCOUNT 0
?IF @sql=N''
??EXEC(N'SELECT TOP 0'
???+N' '+@FieldShow
???+N' FROM '+@tbname )
?ELSE
?BEGIN
??SET @sql=STUFF(@sql,1,1,N'')??
??--執行查詢
??EXEC(N'SELECT TOP '+@TopN
???+N' '+@FieldShow
???+N' FROM '+@tbname
???+N' WHERE '+@FieldKey
???+N' IN( '+@sql
???+N') '+@FieldOrder )
?END
END

字符串緩存實現的通用分頁存儲過程.sql


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 一区二区三区四区免费视频 | 日本免费视屏 | 亚洲最大的成人网 | 亚洲精品欧美一区二区三区 | 亚洲美女在线观看播放 | 日韩午夜在线视频 | 亚洲码和乱人伦中文一区 | 欧美伦乱| 91在线品视觉盛宴免费 | 久久中文视频 | 国产在线精品福利91香蕉 | 久久福利一区二区三区 | 成人欧美一区二区三区黑人3p | 久久青青草原精品国产麻豆 | 亚洲一级免费视频 | 日本波多野结衣字幕久久 | jizz中国女人| 欧美精品久久久久久久影视 | 日韩1| 波多野结衣手机视频一区 | 成年女人永久免费观看片 | 国产色婷婷精品综合在线手机播放 | 九九九九九热 | 色综合激情| 国产成人黄色在线观看 | 中文字幕精品在线观看 | 天天操婷婷| 国产一区二区免费在线观看 | 一级毛片在线免费观看 | 在线中文字幕观看 | 天天天天干 | 国产精品久久久久桃色tv | 亚洲国产日产韩国欧美综合 | 热re99久久精品国产99热 | 成人看片黄a免费看视频 | 欧美成人在线免费视频 | 亚洲精品国产福利一区二区三区 | 免费精品99久久国产综合精品 | 天天躁日日躁狠狠躁中文字幕 | 精品外国呦系列在线观看 | 四虎永久网址在线观看 |