Oracle儲存過程返回游標

2021-06-06 04:50:24 字數 1458 閱讀 6837

oracle儲存過程返回游標

有倆種方法:

一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為

in out 或out

(1)宣告個人系統游標.(推薦)

create or replace p_temp_procedure (

cur_arg out sys_refcursor;     --方法1 )

begin

open cur_arg for select * from tablename;

end 呼叫

declare

cur_calling sys_refcursor;

begin

p_temp_procedure(cur_calling);  --這樣這個游標就有值了

for rec_next in cur_calling loop

....

end loop;

end;

(2)在包頭中申明乙個遊表型別,然後呼叫者申明乙個這個型別的游標變數,傳給返回游標的儲存過程 ,儲存過程out這個結果集,這種方法很麻煩.游標型別不能像索引表一樣使用create or replace type方法來建立,所以只能在包中申明,並且需要使用/來執行,後面的儲存過程才認這個游標型別.(不推薦,但是建議要知道並且要會這種方式,畢竟它有它存在的道理)

--定義全域性變數

create or replace package pkg_package as

type type_cursor is ref cursor;

type type_record is record (

test01 varchar2(32),

test02 varchar2(32),

test03 varchar2(32) );

end; /

--建立返回游標的儲存過程

create or replace procedure p_temp_procedure (

cur_out_arg out pkg_package.type_cursor )

isbegin

open cur_out_arg for select * from test;

end; /

--呼叫

declare

cur_out_arg pkg_package.type_cursor;

rec_arg pkg_package.type_record;

begin

p_temp_procedure(cur_out_arg);

fetch cur_out_arg into rec_arg;

dbms_output.put_line(rec_arg.test01);

dbms_output.put_line(rec_arg.test02);

dbms_output.put_line(rec_arg.test03);

end;

oracle 儲存過程返回游標

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

Oracle儲存過程返回游標例項詳解

有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 如下 create or replace p temp procedure cur arg out sys refcursor 方法1 begin open cur...

請問Oracle儲存過程如何返回游標?

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