1 oracle 存儲過程創建
create or replace procedure p_procname(i_id in integer,
i_keyword in varchar2, --這裏參數不需要寫字符長度
i_pagenum in integer, -- in 代表的是參數是 input 方式, out 代表參數 爲output .
i_pagesize in integer,
o_ecur out sys_refcursor) as --這裏是重點,oracle是使用遊標來存儲查詢結果的
v_begin integer; --這裏變量需要寫字符長度
v_end integer; --一定要帶分號;
begin
--oracle 賦值常用方法有兩種, 一種 變更名:='myname'; 一種是使用 into
select ((i_pagenum - 1) * i_pagesize + 1), (i_pagenum * i_pagesize)
into v_begin, v_end
from dual; -- dual 是虛擬表,oracle 不可以直接使用 select ,必須和form 一起使用。
open o_ecur for --打開遊標,接收查詢結果集
select id, t
from (select id,
row_number() over(order by credate desc) n, --開窗函數,和SQL SERVER的用法一樣的。
count(1) over() t --開窗函數,和SQL SERVER的用法一樣的。
from tablename
where id = i_id
and (name like '%' || i_keyword || '%') --oracle 拼接字段串使用||
) t
where n between v_begin and v_end;
end p_procname;