案例:添加學(xué)生,然后返回該班級(jí)的所有學(xué)生。
create or replace procedure add_stu(
p_sid stu.sid%type,
p_sname stu.sname%type,
p_cid stu.cid%type,
p_data out sys_refcursor -- 輸出變量,系統(tǒng)引用游標(biāo)
-
)
as
begin
insert into stu(sid,sname,cid)
values(p_sid,p_sname,p_cid);
commit;
--將查詢的結(jié)果集的地址放到引用游標(biāo)變量中,再傳遞出去
open p_data for select * from stu where cid=p_cid;
end;
--PL/SQL 調(diào)用
declare
stu_data sys_refcursor;
stu_row stu%rowtype;
begin
add_stu(52,'b',1,stu_data);
fetch stu_data into stu_row;
while(stu_data%found)
loop
dbms_output.put_line(stu_row.sname);
fetch stu_data into stu_row;
end loop;
close stu_data;
end;
--java中調(diào)用
CallableStatement cstmt = null;
String spName = “{call add_stu(?,?,?,?)}";
cstmt = conn.prepareCall(spName);
cstmt.setInt(1, 工號(hào));
…………
cstmt.registerOutParameter(4, Oracle.jdbc.OracleTypes.CURSOR); --設(shè)置第4個(gè)問號(hào)的值
cstmt.executeUpdate();
ResultSet rs = (ResultSet)cstmt.getObject(4); 本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|