Oracle使用儲存過程返回查詢游標

2022-07-28 02:51:12 字數 1161 閱讀 3453

如果報表邏輯非常複雜的話, 可以把報表邏輯放到儲存過程裡,加工乙個全域性臨時表。

前端查詢的時候只查詢臨時表即可。只是第一次查詢需要忍受加工的時間。

--建立儲存過程,返回sys_refcursor 

create or replace procedure p_get_agent(v_agent_cate in varchar2,

v_page in integer,

o_cursor out sys_refcursor) is

begin

insert into tmp_tab_t_agent(agent_id)

select agent_id from t_agent ta where ta.agent_cate = v_agent_cate;

open o_cursor for

select agent_id

from (select rownum as rn, agent_id

from (select agent_id from tmp_tab_t_agent order by agent_id)

where rownum < v_page * 10)

where rn >= (v_page - 1) * 10;

exception

when others then

dbms_output.put_line('wrong');

end;

--呼叫儲存過程,

declare

v_cursor sys_refcursor;

v_agent_id t_agent.agent_id%type;

begin

-- call the procedure

p_get_agent(v_agent_cate => '5', v_page => 4, o_cursor => v_cursor);

loop

fetch v_cursor

into v_agent_id;

exit when v_cursor%notfound;

dbms_output.put_line(v_agent_id);

end loop;

close v_cursor;

commit;

end;

oracle使用儲存過程返回資料集

很多時候,我們想通過儲存過程獲得乙個輸出集。我們知道sql server的儲存過程在執行之後,返回的就是乙個集合。但是oracle如果要獲得乙個輸出集合,就要麻煩一點了。oracle獲得輸出集合是通過游標實現的,而且游標需要在package中進行宣告。下面就拿分頁的儲存過程為例。首先,先建立乙個包p...

Oracle儲存過程返回游標

oracle儲存過程返回游標 有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 create or replace p temp procedure cur arg out sys refcursor 方法1 be...

oracle 儲存過程返回游標

示例,很多時候我們需要返回結果集,這個時候,我們就可以返回游標的方式給別人呼叫 create or replace procedure getprocontactinfowithpropid prop id in varchar2,outcursor out sys refcursor isbegi...