Oracle分页存储过程
生活随笔
收集整理的這篇文章主要介紹了
Oracle分页存储过程
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
CREATE OR REPLACE Procedure Soa_Getpager(p_Pagesize Int, --每頁記錄數p_Pageno Int, --當前頁碼,從 1 開始p_Sqlcols Varchar2, --選擇列p_Sqlfrom Varchar2, --表名OR連接查詢p_Sqlwhere Varchar2, --查詢子句p_Sqlorderby Varchar2, --排序p_Outrecordcount Out Int, --返回總記錄數p_Outpagecount Out Int, --返回總頁數Result Out Sys_Refcursor) Asv_Sql Varchar2(3000);p_Sqlselect Varchar2(3000);v_Count Int;v_Heirownum Int;v_Lowrownum Int; Begin----拼接SQL查詢語句p_Sqlselect := 'select ' || p_Sqlcols || ' from ' || p_Sqlfrom || ' ' ||p_Sqlwhere || ' ' || p_Sqlorderby;Dbms_Output.Put_Line(p_Sqlselect);----取記錄總數v_Sql := 'select count(1) from (' || p_Sqlselect || ')';Execute Immediate v_SqlInto v_Count;p_Outrecordcount := v_Count;----取總頁數p_Outpagecount := p_Outrecordcount / p_Pagesize;If p_Outpagecount = 0 Thenp_Outpagecount := 1;End If;----執行分頁查詢v_Heirownum := p_Pageno * p_Pagesize;v_Lowrownum := v_Heirownum - p_Pagesize + 1;v_Sql := 'SELECT *FROM (SELECT A.*, rownum rnFROM ( ' || p_Sqlselect || ') AWHERE rownum <= ' || To_Char(v_Heirownum) || ') BWHERE rn >= ' || To_Char(v_Lowrownum);--注意對rownum別名的使用,第一次直接用rownum,第二次一定要用別名rn Dbms_Output.Put_Line(v_Sql);Open Result For v_Sql;End Soa_Getpager;
?
轉載于:https://www.cnblogs.com/huhangfei/p/5000771.html
總結
以上是生活随笔為你收集整理的Oracle分页存储过程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求得到一个字符串@“absdfasdfs
- 下一篇: 泛型是什么?