-- 定义存储过程createorreplaceprocedure
pro_1(a inint, b outint,c inint, d outint)asbegin
b:=a*a;
d:=a*c;end;createorreplaceprocedure
pro_2(a inint, b inint, c inoutint, d outint)asbegin
c:=c+a+b;
d:=c*c;end;
调用存储过程
privatestaticvoidtest02()throwsSQLException{//操作存储过程:pro_2(a in int, b in int, c in out int, d out int)Connection con=Demo01Jdbc.getCon();//调用存储过程 使用接口CallableStatement//{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}//{call <procedure-name>[(<arg1>,<arg2>, ...)]}String sql="{call pro_2(?,?,?,?)}";CallableStatement call=con.prepareCall(sql);//给占位符赋值
call.setInt(1,4);//给in模式的参数赋值
call.setInt(2,5);//给in模式的参数赋值
call.setInt(3,6);//给in模式的参数赋值
call.registerOutParameter(3,java.sql.Types.INTEGER);//指定out模式的参数
call.registerOutParameter(4,java.sql.Types.INTEGER);//指定out模式的参数//执行
call.execute();//接受out模式的参数的值int result1=call.getInt(3);//参数是占位符int result2=call.getInt(4);//参数是占位符System.out.println(result1+"::::"+result2);Demo01Jdbc.close(call,null, con);}privatestaticvoidtest01()throwsSQLException{//操作存储过程:pro_1(a in int, b out int,c in int, d out int)Connection con=Demo01Jdbc.getCon();//调用存储过程 使用接口CallableStatement//{?= call <procedure-name>[(<arg1>,<arg2>, ...)]}//{call <procedure-name>[(<arg1>,<arg2>, ...)]}String sql="{call pro_1(?,?,?,?)}";CallableStatement call=con.prepareCall(sql);//给占位符赋值
call.setInt(1,4);//给in模式的参数赋值
call.setInt(3,6);//给in模式的参数赋值
call.registerOutParameter(2,java.sql.Types.INTEGER);//指定out模式的参数
call.registerOutParameter(4,java.sql.Types.INTEGER);//指定out模式的参数//执行
call.execute();//接受out模式的参数的值int result1=call.getInt(2);//参数是占位符int result2=call.getInt(4);//参数是占位符System.out.println(result1+"::::"+result2);Demo01Jdbc.close(call,null, con);}