包內包含游標型別過程的呼叫!

2021-04-02 19:55:43 字數 1682 閱讀 8056

1.今天在csdn上看到了這樣乙個問題:

create or replace package pkg_aa

as type myrctype is ref cursor;

procedure get(p_id number, p_rc out myrctype);

end pkg_dept;

我怎麼樣在sql*plus中呼叫這個儲存過程呢?主要是不知道寫那個定義ref cursor。能否寫個呼叫的例子。

另外在pl/sql塊中如何呼叫它?

2.我的回答:

sql> create or replace package pkg_aa

2  as

3      type myrctype is ref cursor;

4      procedure get(p_id number, p_rc out myrctype);

5  6  end pkg_aa;

7  /

package created

sql>

sql> create or replace package body "pkg_aa" as

2  3  procedure get(p_id number, p_rc out myrctype)

4  is

5   v_num  number;

6  begin

7  8  select  p_id into v_num from dual;

9  10  open p_rc for select * from basiccode;

11 

12  end get;

13 

14 

15 

16  end pkg_aa;

17  /

package body created

sql>

sql> declare

2   type myrctype is ref cursor;

3  mycur myrctype;

4  v_num number;

5  begin

6   pkg_aa.get(v_num,mycur);

7  end;

8  /

pl/sql procedure successfully completed

3.bobfang(匆匆過客)的回答:

在sqlplus中直接呼叫,還可以這樣做

var c refcursor

exec pkg_aa.get(1,:c)

print c

結果在sqlplus中測試成功!

我主要用的是pl/ sql devloper中的command視窗,也試驗過bobfang的方法,執行var c refcursor後報錯:

sql> var c refcursor;

refcursor not supported

sql> exec pkg_aa.get(1,:c)

begin pkg_aa.get(1,:c); end;

cursor variable :c cannot be nil

c---------

0sql> print c

c---------

0所以沒有試驗下去,看來以後最好還是使用sqlplus來驗證!

mybatis呼叫儲存過程,獲取返回的游標

將呼叫儲存過程引數放入map中,由於返回的游標中包含很多引數,所以再寫乙個resultmap與之對應,型別為hashmap。設定返回的jdbctype cursor,resultmap設定為id對應的值。最後游標中的值就輸出到list中了。如下 service層 public hashmap tes...

C 執行oracle返回游標型別的儲存過程

c 執行oracle儲存過程,儲存過程 為 create or replace procedure proc test pcursor out pak pub.ut cursor as begin open pcursor for select from scott.emp end proc tes...

C 執行oracle返回游標型別的儲存過程

c 執行oracle儲存過程,儲存過程 為 create orreplace procedure proc test pcursor out pak pub.ut cursor as begin open pcursor for select from scott.emp end proc tes ...