有倆種方法
: 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為
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
) is
begin
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儲存過程返回游標
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...
請問Oracle儲存過程如何返回游標?
有倆種方法 一種是宣告系統游標,一種是宣告自定義游標,然後後面操作一樣,引數型別為 in out 或out 1 宣告個人系統游標.推薦 create or replace p temp procedure cur arg out sys refcursor 方法1 begin open cur ar...