Rumah > pangkalan data > tutorial mysql > Oracle中的存储过程在pl/sql和java中如何调用

Oracle中的存储过程在pl/sql和java中如何调用

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Lepaskan: 2016-06-07 16:57:36
asal
1476 orang telah melayarinya

案例:添加学生,然后返回该班级的所有学生。create or replace procedure add_stu(p_sid stu.sid%type, p_sname stu.sn

案例:添加学生,然后返回该班级的所有学生。

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     -- 输出变量,系统引用游标
)
as
begin
   insert into stu(sid,sname,cid)
   values(p_sid,p_sname,p_cid);
   commit;
 
   --将查询的结果集的地址放到引用游标变量中,,再传递出去
   open p_data for select * from stu where cid=p_cid;
 
end;


--PL/SQL 调用
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中调用
CallableStatement cstmt = null;
String spName = “{call add_stu(?,?,?,?)}";
cstmt = conn.prepareCall(spName);
cstmt.setInt(1, 工号);
 …………
cstmt.registerOutParameter(4, Oracle.jdbc.OracleTypes.CURSOR);   --设置第4个问号的值
cstmt.executeUpdate();
ResultSet rs = (ResultSet)cstmt.getObject(4);

linux

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan