oracle的儲存過程如何返回結果集

2021-08-29 17:18:27 字數 1683 閱讀 8654

sql server 的儲存過程返回結果集很簡單

oracle 儲存過程返回結果集怎麼這麼費勁?

過程返回記錄集:

create or replace package pkg_test

as type myrctype is ref cursor;

procedure get (p_id number, p_rc out myrctype);

end pkg_test;

/ create or replace package body pkg_test

as procedure get (p_id number, p_rc out myrctype)

is sqlstr   varchar2 (500);

begin

if p_id = 0 then

open p_rc for

select id, name, ***, address, postcode, birthday

from student;

else

sqlstr :=

'select id,name,***,address,postcode,birthday

from student where id=:w_id';

open p_rc for sqlstr using p_id;

end if;

end get;

end pkg_test;

/ 函式返回記錄集:

建立帶ref cursor定義的包和包體及函式:

create or replace

package pkg_test as

/* 定義ref cursor型別

不加return型別,為弱型別,允許動態sql查詢,

否則為強型別,無法使用動態sql查詢;

*/ type myrctype is ref cursor;  

--函式申明

function get(intid number) return myrctype;

end pkg_test;

/ create or replace

package body pkg_test as

--函式體

function get(intid number) return myrctype is

rc myrctype;  --定義ref cursor變數

sqlstr varchar2(500);

begin

if intid=0 then

--靜態測試,直接用select語句直接返回結果

open rc for select id,name,***,address,postcode,birthday from student;

else

--動態sql賦值,用:w_id來申明該變數從外部獲得

sqlstr := 'select id,name,***,address,postcode,birthday from student where id=:w_id';

open rc for sqlstr using intid;

end if;

return rc;

end get;

end pkg_test;

/

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

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

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