现在的位置: 首页 > 综合 > 正文

java 调用oracle中的过程函数

2014年01月19日 ⁄ 综合 ⁄ 共 1192字 ⁄ 字号 评论关闭

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

 

 

抱歉!评论已关闭.