--数据库中存储过程的调用
create a test window
declare
--字段的声明
cid varchar2(20) := 'A1',
cname varchar2(50) :='ck',
csex student.sex :='男'
begin
--执行存储过程
--存储过程名
名字(cid,cname,csex);
end;
如果存储过程需要输出内容,那么在Test window中是无法执行的,必须转到command window
并开启输出功能
set serveroutput on
然后再执行存储过程
--java调用存储过程
无返回
//test1为存储过程名
Connection conn = DBHelper.getConnection();
//获得调用存储过程的预处理对象
CallableStatement cs = conn.prepareCall("{call test1(?,?,?,?)}");
conn.setAutoCommit(false); //设置为手动提交
cs.setInt(1,4);//给?处添加参数,?从1开始记起
cs.setString(2, "lck");
cs.setInt(3, 23);
cs.setString(4, "男");
cs.execute(); //执行存储过程
conn.commit();
有返回[单值]
//test1为存储过程名
Connection conn = DBHelper.getConnection();
//获得调用存储过程的预处理对象
CallableStatement cs = conn.prepareCall("{call test1(?)}");
//注册输出参数,给定参数的类型为游标,游标指向了一个结果集合
cs.registerOutParameter(1,oracle.jdbc.OracleTypes.VARCHAR);//不同的jdbc版本路径不同
cs.execute(); //执行存储过程
//获得返回值,下表out参数的为止,从1开始
System.out.println(cs.getString(1));
有返回[列表]
//test1为存储过程名
Connection conn = DBHelper.getConnection();
//获得调用存储过程的预处理对象
CallableStatement cs = conn.prepareCall("{call test1(?)}");
//注册输出参数,给定参数的类型为游标,游标指向了一个结果集合
cs.registerOutParameter(1,oracle.jdbc.OracleTypes.CURSOR);//不同的jdbc版本路径不同
cs.execute(); //执行存储过程
//获得列表结果集合
ResultSet rs = cs.getResultSet();
//遍历结果集合
while(rs.next){//如果集合存在下一行数据
System.out.println(rs.getString(1));
}
转载于:https://blog.51cto.com/ckinchina/1160224