create table person( id int, name varchar(30) ); drop table person; alter table person add uuid varchar(32); commit; create or replace procedure p1(pid int,pname varchar,cnt out int,cid out varchar) as begin select sys_guid() into cid from dual; insert into person(id,name,uuid) values(pid,pname,cid); select count(1) into cnt from person; end; select * from person;
@Test public void testCallProcedure() throws Exception { String sql = "{call p1(?,?,?,?)}"; CallableStatement cst = con.prepareCall(sql); cst.setString(2, "Mary"); cst.setInt(1, 101); // 注册两个返回的参数 cst.registerOutParameter(3, Types.INTEGER); cst.registerOutParameter(4, Types.VARCHAR); cst.execute(); // 执行完成以后,获取值 int cnt = cst.getInt(3); String id = cst.getString(4); System.err.println("cnt is:" + cnt + "," + id); }