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;