如果報表邏輯非常複雜的話, 可以把報表邏輯放到儲存過程裡,加工乙個全域性臨時表。
前端查詢的時候只查詢臨時表即可。只是第一次查詢需要忍受加工的時間。
--建立儲存過程,返回sys_refcursorcreate 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...