国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > Oracle > 正文

實例講解"Oracle"數據庫的分頁顯示

2024-08-29 13:52:09
字體:
來源:轉載
供稿:網友


Create PROCEDURE pageTest --用于翻頁的測試

--需要把排序字段放在第一列

(

@FirstID nvarchar(20)=null, --當前頁面里的第一條記錄的排序字段的值

@LastID nvarchar(20)=null, --當前頁面里的最后一條記錄的排序字段的值

@isNext bit=null, --true 1 :下一頁;false 0:上一頁

@allCount int output, --返回總記錄數

@pageSize int output, --返回一頁的記錄數

@CurPage int --頁號(第幾頁)0:第一頁;-1最后一頁。

)


AS


if @CurPage=0

begin

--統計總記錄數

select @allCount=count(ProductId) from Product_test


set @pageSize=10

--返回第一頁的數據

select top 10

ProductId,

ProductName,

Introduction

from Product_test order by ProductId

end


else if @CurPage=-1


select * from

(select top 10 ProductId,

ProductName,

Introduction


from Product_test order by ProductId desc ) as aa

order by ProductId

else


begin

if @isNext=1

--翻到下一頁

select top 10 ProductId,

ProductName,

Introduction

from Product_test where ProductId > @LastID order by ProductId


else

--翻到上一頁

select * from

(select top 10 ProductId,

ProductName,

Introduction

from Product_test where ProductId < @FirstID order by ProductId desc) as bb order by ProductId

end

*******************************************************************************************************

CREATE OR REPLACE PROCEDURE TABLEPAGE_SELECT(v_page_size  int, --the size of a page of list

                       v_current_page int, --the current page of list

                       v_table_name varchar2, --the talbe name

                       v_order_field varchar2,--the order field

                       v_order_sequence varchar2,--the order sequence should by "_desc"or "_asc",_is blank.

                       --v_sql_select  varchar2, --the select sql for procedure

                       --v_sql_count  varchar2, --the count sql for procedure

                       --v_out_recordcount OUT int, --the num of return rows

                       p_cursor OUT refcursor_pkg.return_cursor) as

 v_sql     varchar2(3000); --the sql for select all rows of list

 v_sql_count  varchar2(3000); --the count sql for procedure

 v_sql_order  varchar2(2000); --the order of list

 v_count    int; -- the amount rows fo original list

 v_endrownum  int; --the end row num of the current page

 v_startrownum int; --the start row num of the current page

BEGIN

 ----set the order of list

 if v_order_field!='NO' then

  v_sql_order :=' ORDER BY '|| v_order_field ||' '||v_order_sequence;

 else

   v_sql_order :='';

 end if;

 ----catch the amount rows of list

 v_sql_count:='SELECT COUNT(ROWNUM) FROM '||v_table_name;

 execute immediate v_sql_count into v_count;

 -- v_out_recordcount := v_count;

 ----set the value of start and end row

 if v_order_sequence='desc' then

  v_endrownum:=v_count-(v_current_page-1)*v_page_size;

  v_startrownum:=v_endrownum - v_page_size + 1;

 else

  v_endrownum:= v_current_page * v_page_size;

  v_startrownum := v_endrownum - v_page_size + 1;

 end if;

 ----the sql for page slide

 v_sql := 'SELECT * FROM (SELECT '||v_table_name||'.*, rownum rn FROM '||v_table_name||' WHERE rownum <= ' ||

      to_char(v_endrownum) ||' '|| v_sql_order||') WHERE rn >= ' ||

      to_char(v_startrownum)||' '||v_sql_order;

 open p_cursor for v_sql;

END TABLEPAGE_SELECT;


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 绥宁县| 普兰店市| 沙湾县| 利津县| 华阴市| 西丰县| 顺平县| 延边| 凤山市| 富民县| 华蓥市| 江华| 博湖县| 九台市| 新闻| 凌海市| 星子县| 蒙山县| 应城市| 贵阳市| 海南省| 榆中县| 颍上县| 昌宁县| 贵定县| 马关县| 桓台县| 北川| 五指山市| 宁武县| 达州市| 北宁市| 抚州市| 蒙山县| 商丘市| 古浪县| 高清| 鹤壁市| 桓仁| 上蔡县| 额济纳旗|