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

字符串緩存實(shí)現(xiàn)的通用分頁(yè)存儲(chǔ)過(guò)程.sql

系統(tǒng) 2613 0

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

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

--其他參數(shù)檢查及規(guī)范
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值,則計(jì)算總頁(yè)數(shù)(這樣設(shè)計(jì)可以只在第一次計(jì)算總頁(yè)數(shù),以后調(diào)用時(shí),把總頁(yè)數(shù)傳回給存儲(chǔ)過(guò)程,避免再次計(jì)算總頁(yè)數(shù),對(duì)于不想計(jì)算總頁(yè)數(shù)的處理而言,可以給@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

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

--第一頁(yè)直接顯示
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'')??
??--執(zhí)行查詢
??EXEC(N'SELECT TOP '+@TopN
???+N' '+@FieldShow
???+N' FROM '+@tbname
???+N' WHERE '+@FieldKey
???+N' IN( '+@sql
???+N') '+@FieldOrder )
?END
END

字符串緩存實(shí)現(xiàn)的通用分頁(yè)存儲(chǔ)過(guò)程.sql


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

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

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。。?/p>

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 思99re久久这里只有精品首页 | 午夜影院毛片 | 99久久国产综合精品女不卡 | 日本一区二区在线视频 | 日韩国产成人精品视频 | 最新国产精品久久精品 | 特级特黄一级乱仑 | 99中文在线 | 亚洲精品综合一区二区三区 | 日韩一区二区不卡 | 国产在线一区二区三区欧美 | 久久一本一区二区三区 | 中文字幕日韩哦哦哦 | 俄罗斯午夜影院 | 亚洲日本va中文字幕在线不卡 | 久久天天躁综合夜夜黑人鲁色 | 女人l8毛片a一级毛片 | 尤物视频在线免费观看 | 中文字幕日韩一区二区不卡 | 综合在线亚洲 | 亚洲精品国产成人中文 | 中文在线视频 | 久久综合久久精品 | 亚洲欧美日韩精品中文乱码 | 咪咪色网 | 亚洲精品在线播放视频 | 亚洲视频中文字幕在线观看 | 欧美成人免费毛片 | 青青草国产免费一区二区 | 中文字幕一区视频一线 | 天天做天天爱天天爽综合网 | 久久综合九色综合97欧美 | 91在线亚洲 | 国产精品久久一区 | 香蕉视频黄色片 | 一级毛片高清 | 99视频在线免费看 | 国产精品美女在线 | 6080欧美一区二区三区四区 | 一区二区三区高清不卡 | 四虎在线观看 |