最近在學習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 ...