日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

PostgGresql如何簡單實(shí)現(xiàn)sqlserver中的分頁存儲

系統(tǒng) 2224 0

?

?

?

相信一直在搞sqlserver的人突然要將數(shù)據(jù)庫從sqlserver遷移到postgresql來,一定會很關(guān)注諸如sqlserver和postgresql數(shù)據(jù)類型的差異、存儲過程、作業(yè)、視圖、觸發(fā)器如何轉(zhuǎn)換的問題,很幸運(yùn)的最近遇到了一個(gè)做完的項(xiàng)目要從sqlserver2008轉(zhuǎn)換到postgresql,?由于項(xiàng)目的規(guī)模不大,因此數(shù)據(jù)庫中只涉及到幾十張基本表,加上一個(gè)分頁的存儲過程和一個(gè)作業(yè),但是數(shù)據(jù)量確實(shí)異常的大,考慮到以后的分布式存儲也是要換數(shù)?據(jù)庫的一個(gè)原因(當(dāng)然作為一個(gè)剛?cè)胄幸荒甑男〔宋襾碚f,不會說出這樣的話,嘿嘿是一個(gè)預(yù)言組的同事的構(gòu)想,可惜苦逼的做事的是我呵呵);今天經(jīng)過對postgresql文檔的簡短的查看,大概了解一二,我就看是動手做了,建表的過程不用說了,就是注意下類型,控制好別弄錯(cuò)了為以后帶來麻煩。

廢話不多說,直接說PostgGresql如何實(shí)現(xiàn)分頁

下面的是sqlserver中的分頁存儲過程:

CREATE?PROCEDURE?[dbo].[PAGESELECT]

@SQLPARAMS?nvarchar(2000)='',?--查詢條件

@PAGESIZE?int=20,--每頁的記錄數(shù)

@PAGEINDEX?int=0,?--第幾頁,默認(rèn)第一頁

@SQLTABLE?varchar(5000),--要查詢的表或視圖,也可以一句sql語句

@SQLCOLUMNS?varchar(4000),--查詢的字段

@SQLPK?varchar(50),--主鍵?

@SQLORDER?varchar(200),--排序

@Count?int=-1?output

AS

BEGIN

SET?NOCOUNT?ON;

DECLARE?@PAGELOWERBOUND?INT?

DECLARE?@PAGEUPPERBOUND?INT

DECLARE?@SQLSTR?nvarchar(4000)

--獲取記錄數(shù)

IF?@PAGEINDEX=0??--可根據(jù)實(shí)際要求修改條件,如果是總是獲取記錄數(shù)

BEGIN

set?@SQLSTR=N'select?@sCount=count(1)?FROM?'+@SQLTABLE+'?WHERE?1=1'+@SQLPARAMS

Exec?sp_executesql?@sqlstr,N'@sCount?int?outPut',@Count?output

END

ELSE

BEGIN

SET?@COUNT?=-1?

END

?

SET?@PAGELOWERBOUND=?@PAGEINDEX?*@PAGESIZE+1

SET?@PAGEUPPERBOUND?=?@PAGELOWERBOUND?+@PAGESIZE-1

IF?@SQLORDER=''

BEGIN

SET?@SQLORDER='ORDER?BY?'+@SQLPK

END

?

?

SET?@SQLSTR=N'SELECT?*?FROM?(select?'+@SQLCOLUMNS+',ROW_NUMBER()?Over('+@SQLORDER+')?as?PAGESELECT_rowNum?FROM?'+@SQLTABLE+'?WHERE?1=1'+@SQLPARAMS+?')?as?PAGESELECT_TABLE

where?PAGESELECT_rowNum?between?'+STR(@PAGELOWERBOUND)+'?and?'+STR(@PAGEUPPERBOUND)+'?'

print?@SQLSTR

Exec?sp_executesql?@SQLSTR

?

SELECT?@COUNT

?

END

?

?

??咋一想,sqlServer上的思路照著弄到postgresql中就ok了(存儲過程在postgresql中叫函數(shù)),后來也確實(shí)根據(jù)sql改了一個(gè)存儲過程,寫了一大串,其實(shí)在postgresql中遠(yuǎn)遠(yuǎn)不用這么麻煩的,postgresql根據(jù)情況寫一個(gè)sql就可以了,其實(shí)存儲過程中也是這么實(shí)現(xiàn)的

?

Select??@columns?from??@table?where?1=1?and??@params??order?by??@order???limit?@pagesize?offset?@pagelowbound

然后在項(xiàng)目中動態(tài)的寫入?yún)?shù)就ok了,都說分頁支持多少萬多少萬的數(shù)據(jù),但是我有點(diǎn)迷糊如何才是負(fù)載呢

?

項(xiàng)目現(xiàn)在還差作業(yè)沒弄到postgresql,下一步就要弄這個(gè)....希望明天能搞定。

我是一只小菜,那里寫錯(cuò)了或是言語上說錯(cuò)了請不吝指教,我需要大家的幫助,好多不懂好多劈頭蓋面的迷茫!!!!

?

PostgGresql如何簡單實(shí)現(xiàn)sqlserver中的分頁存儲過程


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 漾濞| 油尖旺区| 高邮市| 专栏| 西贡区| 宿州市| 崇阳县| 大足县| 应用必备| 治多县| 高台县| 兴山县| 铜陵市| 若羌县| 汝阳县| 牡丹江市| 精河县| 凉山| 东兰县| 西丰县| 广东省| 辽源市| 镇平县| 澄江县| 曲阜市| 三原县| 安新县| 尚志市| 汉源县| 淳化县| 普格县| 泰安市| 绥芬河市| 崇文区| 翼城县| 伊通| 乐平市| 新乐市| 南木林县| 东安县| 南丰县|