.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;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章