麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

SQL Server 分頁查詢通用存儲過程(只做分頁查詢用)

2024-08-31 01:02:42
字體:
來源:轉載
供稿:網友

自開始做項目以來,一直在用。這段存儲過程的的原創者(SORRY,忘記名字了),寫得這段SQL代碼很不錯,我在這個基礎上,按照我的習慣以及思維方式,調整了代碼,只做分頁查詢用。

/*----------------------------------------------*procedure name : P_PageResult* author :Fay* create date : 2014-07-18*/CREATE PROCEDURE prcPageResult-- 獲得某一頁的數據 --@currPage int = 1, --當前頁頁碼 (即Top currPage)@showColumn varchar(2000) = '*', --需要得到的字段 (即 column1,column2,......)@tabName varchar(2000), --需要查看的表名 (即 from table_name)@strCondition varchar(2000) = '', --查詢條件 (即 where condition......) 不用加where關鍵字@ascColumn varchar(100) = '', --排序的字段名 (即 order by column asc/desc)@bitOrderType bit = 0, --排序的類型 (0為升序,1為降序)@pkColumn varchar(50) = '', --主鍵名稱@pageSize int = 20 --分頁大小ASBEGIN -- 存儲過程開始-- 該存儲過程需要用到的幾個變量 --DECLARE @strTemp varchar(1000)DECLARE @strSql varchar(4000) --該存儲過程最后執行的語句DECLARE @strOrderType varchar(1000) --排序類型語句 (order by column asc或者order by column desc)BEGINIF @bitOrderType = 1 -- bitOrderType=1即執行降序BEGINSET @strOrderType = ' ORDER BY '+@ascColumn+' DESC'SET @strTemp = '<(SELECT min'ENDELSEBEGINSET @strOrderType = ' ORDER BY '+@ascColumn+' ASC'SET @strTemp = '>(SELECT max'ENDIF @currPage = 1 -- 如果是第一頁BEGINIF @strCondition != ''SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+' WHERE '+@strCondition+@strOrderTypeELSESET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+@strOrderTypeENDELSE -- 其他頁BEGINIF @strCondition !=''SET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+' WHERE '+@strCondition+' AND '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+' '+@pkColumn+' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderTypeELSESET @strSql = 'SELECT TOP '+STR(@pageSize)+' '+@showColumn+' FROM '+@tabName+' WHERE '+@pkColumn+@strTemp+'('+@pkColumn+')'+' FROM (SELECT TOP '+STR((@currPage-1)*@pageSize)+' '+@pkColumn+' FROM '+@tabName+@strOrderType+') AS TabTemp)'+@strOrderTypeENDENDEXEC (@strSql)END -- 存儲過程結束------------------------------------------------GO

調用方法:

prcPageResult 1,'*','TableName','','CreateDate',1,'PkID',25

上面表示,查詢表TableName的所有字段,前25條記錄,因為是第一頁,排序字段為CreateDate,降序排列,主鍵是PkID。這個存儲過程的功能比較強大,用在項目中非常的適用。不信您可以試試看,尤其是在百萬級數據上,他的優勢就顯露無疑了,當然,這段代碼是可以轉換成MySql中的存儲過程的,不過,在這里就不給大家了,你們可以自己試著轉換看看。

下面的存儲過程查詢表的記錄數:

/*----------------------------------------------*procedure name : prcRowsCount* author :Fay* create date : 2014-07-18*/CREATE PROC prcRowsCount@tabName varchar(200), --需要查詢的表名@colName varchar(200)='*', --需要查詢的列名@condition varchar(200)='' --查詢條件ASBEGINDECLARE @strSql varchar(255)IF @condition = ''SET @strSql='select count('+@colName+') from '+@tabNameELSESET @strSql='select count('+@colName+') from '+@tabName+' where '+@conditionEXEC (@strSql)END------------------------------------------------GO

還有刪除記錄的通用存儲過程和查詢單條記錄的通用存儲過程在這里就不奉送了,感謝提供原通用分頁查詢存儲過程的哥們,謝謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 91成人亚洲 | 国产羞羞视频在线观看 | 久久久久久久久国产 | av电影网在线观看 | 亚洲爱爱网站 | 色猫av| 九九热在线免费观看视频 | 成人wxx视频免费 | 91在线视频在线观看 | 精品在线观看一区 | 神秘电影91 | 午夜国产精品成人 | 91精品国产日韩91久久久久久360 | 美女久久久久久久久 | 久久免费观看一级毛片 | 久久精品亚洲欧美日韩精品中文字幕 | 国产黄色毛片 | 国产日韩a| 亚洲人成中文字幕在线观看 | 精品久久久久久久 | 国产成人自拍视频在线 | 黄视频网站免费在线观看 | 国产69久久精品成人看 | 日韩黄色片在线观看 | 91av在线免费| 欧美三级欧美成人高清www | 羞羞的视频在线免费观看 | 国产一区视频在线观看免费 | 在线看小早川怜子av | 一本色道久久久888 国产一国产精品一级毛片 国产精品高潮视频 | 一级免费大片 | 欧美福利视频一区二区三区 | 黄色网址免费入口 | 国产精品久久久久久久久久久久久久久 | 日韩精品网站在线观看 | 国产精品久久久久久久久久了 | 欧美性受xxxx人人本视频 | 色污视频在线观看 | 久久久久久久久久久久免费 | 亚洲天堂字幕 | 久草在线视频精品 |