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

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

系統 2209 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元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久精品国产99国产精品亚洲 | 亚洲精品播放 | 亚洲欧美日韩在线不卡 | 一区二区视频在线观看免费的 | 欧美午夜在线观看理论片 | 看黄色免费网站 | 亚洲一区二区三区精品国产 | 国产精品麻豆a啊在线观看 国产精品麻豆高清在线观看 | 欧美日韩在线观看区一二 | 91精品啪在线观看国产老湿机 | 日韩欧美久久一区二区 | 久久久久久网站 | 亚洲精品第一综合99久久 | 免费中日高清无专码有限公司 | 久久久久久久久久免费视频 | 精品久久久久久蜜臂a∨ | 亚洲码和乱人伦中文一区 | 国产精品99r8在线观看 | 毛片免费观看网址 | 高清一区二区三区免费 | 久久精品综合国产二区 | 精品动漫中文字幕一区二区三区 | 久久综合日韩亚洲精品色 | 高清一级毛片 | 99热这里只有精品88 | 美女一级大黄录像一片 | 精品在线一区二区 | 91成人免费福利网站在线 | 国产综合视频在线 | 日韩在线观看视频网站 | 久久综合久久自在自线精品自 | 香蕉久久ac一区二区三区 | 在线视频欧美精品 | 四虎影永久在线观看精品 | 久久久久久综合对白国产 | 久久精品一区二区 | 狠狠色伊人亚洲综合第8页 狠狠色综合久久丁香婷婷 狠狠色综合久久婷婷 | 久久99亚洲综合精品首页 | 日韩国产精品欧美一区二区 | 一区二区日韩欧美 | 999视频在线观看 |