.net C# 调用 oracle 存储过程 变量使用 分页

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;
            

猜你喜欢

转载自www.cnblogs.com/BinBinGo/p/11605549.html