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