項目中需要用到Sybase數據庫的分頁功能,想盡各種辦法都沒有成功,最后用如下的存儲過程成功實現功能,記錄備忘。
?
CREATE
PROCEDURE
jsp_query_page
@sql
varchar
(
2000
),
@start
int
,
@pageSize
int
as
begin
declare
@ipage
int
declare
@rcount
int
declare
@execsql
varchar
(
2000
)
declare
@sql1
varchar
(
2000
)
declare
@t
int
,
@p
int
,
@n
int
,
@l
int
begin
set
@sql1
=
@sql
set
@n
=
0
set
@l
=
0
set
@t
=
charindex
(
'
select
'
,
lower
(
@sql
))
set
@sql
=
substring
(
@sql
,
@t
+
7
,char_length(
@sql
)
-
7
)
set
@n
=
@n
+
1
set
@l
=
@l
+
7
while
(
@n
!=
0
)
begin
set
@t
=
charindex
(
'
select
'
,
lower
(
@sql
))
set
@p
=
charindex
(
'
from
'
,
lower
(
@sql
))
if
((
@t
<
@p
)
and
(
@t
!=
0
))
begin
set
@sql
=
substring
(
@sql
,
@t
+
7
,char_length(
@sql
)
-
7
)
set
@n
=
@n
+
1
set
@l
=
@l
+
6
+
@t
end
else
begin
set
@sql
=
substring
(
@sql
,
@p
+
5
,char_length(
@sql
)
-
5
)
set
@n
=
@n
-
1
set
@l
=
@l
+
4
+
@p
end
end
set
@execsql
=
substring
(
@sql1
,
1
,
@l
-
5
)
+
'
,sybid=identity(12) into #temp
'
+
substring
(
@sql1
,
@l
-
4
,char_length(
@sql1
)
-
@l
+
5
)
select
@rcount
=
@start
+
@pageSize
set
rowcount
@rcount
set
@execsql
=
@execsql
||
'
select * from #temp where sybid>
'
||
convert
(
varchar
,
@start
)
||
'
and sybid <=
'
||
convert
(
varchar
,
@rcount
)
print
@execsql
execute
(
@execsql
)
set
rowcount
0
end
end
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

