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();