1,无返回值+有返回值的过程
create table book (bookId number,bookName varchar2(50),publishHouse varchar2(50)); --过程 --in:表示这是一个输入参数,默认是in可以不写\ --out: create or replace procedure sp_pro11 (spBookId in number,spbookName in varchar2,sppublishHouse in varchar2) is begin insert into book values(spBookId,spbookName,sppublishHouse); end; --有输入和输出的实例 create or replace procedure sp_pro12 (spno in number,spName out varchar2,spSal out number,spJob out varchar2) is begin select ename,sal,job into spName,spSal,spJob from emp where empno=spno; end;
2,java调函数的写法(无返回值+有返回值的)
Class.forName(driver); conn=DriverManager.getConnection(strUrl,"scott","tiger"); /* CallableStatement pro =conn.prepareCall("{call sp_pro11(?,?,?)}"); pro.setInt(1, 10); pro.setString(2, "这是一本神秘书本"); pro.setString(3, "人民出版社!"); pro.execute(); */ CallableStatement pro =conn.prepareCall("{call sp_pro12(?,?,?,?)}"); pro.setInt(1, 7788); //这是oracle过程返回值; pro.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR); pro.registerOutParameter(3, oracle.jdbc.OracleTypes.DOUBLE); pro.registerOutParameter(4, oracle.jdbc.OracleTypes.VARCHAR); pro.execute(); //取出返回值 String name=pro.getString(2); String job = pro.getString(4); Double sal = pro.getDouble(3); System.out.println("7788的名字:"+name+" 工资:"+sal+" 工作:"+job); pro.close(); conn.close();