JDBC调用MYSQL存储过程
mysql无法返回游标
- 参数IN
tt表结构:
CREATE TABLE tt (
id int(11) DEFAULT NULL,
name varchar(30) DEFAULT NULL
)
存储过程:
新增sizes+1条数据,name为params
CREATE PROCEDURE pro_insert2(in sizes int,in params varchar(30))
begin
declare i int;
start transaction;
set i = 0;
while i<=sizes do
insert into tt values(i,params);
set i=i+1;
end while;
commit;
end
java调用存储过程主要代码,两个参数都是IN:
Connection c;//此处省略创建c的过程
CallableStatement call = c.prepareCall("{call pro_insert2(?,?)}");
call.setInt(1, 3);//第一个参数是3
call.setString(2,"mike");//第二个参数是mike
call.execute();
- 参数OUT
存储过程:
查询表tt内的记录条数,并返回该条数
CREATE PROCEDURE PRO_SELECT(out c int)
begin
select count(*) into c from tt;
end
java代码:
CallableStatement call = c.prepareCall("{call pro_select(?)}");
call.registerOutParameter(1, java.sql.Types.INTEGER);
call.executeQuery();
System.out.println(call.getInt(1));