Oracle學習筆記(一)通用分頁儲存過程

2021-09-29 13:20:05 字數 2067 閱讀 5668

最近在學習oracle的儲存過程,其中乙個很實用的點就是利用儲存過程實現乙個通用的分頁模型。在此記錄下我的學習筆記。

create or replace procedure p_pagingcursor

/******************************************

功能描述:

通用分頁儲存過程

輸入: i_table in varchar2, --要進行分頁查詢的表名

i_page in integer, --當前頁數

i_pagesize in integer, --每頁要查詢的記錄數

i_conditions in varchar2 --查詢條件

輸出: o_cursor out sys_refcursor, --游標型別,返回分頁結果集

o_rows out integer, --查詢共有多少條記錄

o_result out int --成功返回》0,失敗返回<=0

建立:********************************************/

( i_table in varchar2,

i_page in integer,

i_pagesize in integer,

i_conditions in varchar2,

o_cursor out sys_refcursor,

o_rows out integer,

o_result out integer --成功返回》0,失敗返回<=0

) is

--定義需要的變數

v_sql varchar2(4000);

v_sql_select varchar2(4000);

v_start integer;

v_end integer;

begin

--初始化操作標識

o_result := 0;

if(nvl(i_table, 'null') = 'null') then

o_result := -3; --要查詢的表名有誤

return;

elsif(i_page <= 0) then

o_result := -2; --當前頁數有誤

return;

elsif(i_pagesize <= 0) then

o_result := -1; --每頁要查詢的記錄數有誤

return;

end if;

--計算v_start和v_end是多少

v_start := i_pagesize * (i_page-1) + 1;

v_end := i_pagesize * i_page;

v_sql := 'select t2.* from (select t1.*, rownum rn from (select * from '||i_table||' where '||nvl(i_conditions, '1 = 1')||') t1 where '||nvl(i_conditions, '1 = 1')||' and rownum <= '||v_end||') t2 where '||nvl(i_conditions, '1 = 1')||' and rn >= '||v_start;

--開啟游標,讓游標指向結果集

open o_cursor for v_sql;

--查詢結果集共有多少條記錄

v_sql_select := 'select count(*) from '||i_table||' where '||nvl(i_conditions, '1 = 1');

execute immediate v_sql_select into o_rows;

o_result := 1;

exception

when others then

o_result := -4;

rollback; return;

end p_pagingcursor;

DDD學習(一) 通用語言

ddd是領域驅動設計 domain driven design 的縮寫,我們需要關注的是為什麼要用它,誰來用它,後面將要學到什麼樣的概念和知識來運用它?英語作為世界通用語言,不論你是哪國人,出國在外會一些基本的英語應該可以與其他國家的人進行交流。同樣,我們如果在領域專家和開發人員之間也能建立一種語言...

一 通用定時器的相關介紹

stm32的定時器是個強大的模組,定時器使用的頻率也是很高的,定時器可以做一些基本的定時,還可以做pwm輸出或者輸入捕獲功能。時鐘源問題 名為timx的有八個,其中tim1和tim8掛在apb2匯流排上,而tim2 tim7則掛在 apb1匯流排上。其中tim1 tim8稱為高階控制定時器 adva...

hql2(通用分頁)

basedao sql和hql通用分頁 的區別 通過書籍名字模糊查詢資料,並且具備分頁的功能 hql通用分頁 方法分享 public class basedao object value null 給query賦值 for map.entryentry map.entryset 陣列型別 else ...