【4】Oracle_Java程序调用存储过程和存储函数
发布时间:2020-12-12 15:40:20 所属栏目:百科 来源:网络整理
导读:1、Java连接oracle的jar包 ojdbc14-10.2.0.1.0.jar 2、数据库连接字符串 String driver = "oracle.jdbc.driver.OracleDriver" ; String url = "jdbc:oracle:thin:@192.168.106.128:1521:orcl" ; String user = "scott" ; String password = "orcl" ; 说明:u
1、Java连接oracle的jar包ojdbc14-10.2.0.1.0.jar2、数据库连接字符串Stringdriver="oracle.jdbc.driver.OracleDriver"; Stringurl="jdbc:oracle:thin:@192.168.106.128:1521:orcl"; Stringuser="scott"; Stringpassword="orcl"; 说明:url连接的是虚拟机主机的ip地址 Oracle的连接初始化: privateConnectionconn; privateCallableStatementcs; privateResultSetrs; @Before publicvoidinit()throwsException{ String"scott"; String"orcl"; Class.forName(driver); //获取连接对象 conn=DriverManager.getConnection(url,user,62)">password); } @After voiddestroy()throwsException{ if(rs!=null){ rs.close(); } cs!=cs.close(); } conn!=conn.close(); } } 测试:OracleJDBC的连接: /** *OracleJDBC连接 *@throwsException */ @Test voidtestOracleConnection()throwsException{ //创建CallableStatement对象 cs=conn.prepareCall("select*fromemp"); //执行查询结果 rs=cs.executeQuery(); while(rs.next()){ System.out.println(rs.getObject(1)+":"+rs.getString("ename")); } }; 运行: 3、实现过程的调用(1)调用无返回值的存储过程*如何调用无返回值的存储过程 *pro_add_sal(enoinnumber) voidtestOracleCallProcedure()conn.prepareCall("{callpro_add_sal(?)}"); cs.setInt(1,7788); cs.executeQuery(); };(2)调用有返回值的存储过程/** *调用有返回值的存储过程 *pro_emp_totalsal(enonumber,totalsaloutnumber) @throwsException */ @Test voidtestOracleCallProcedureOutNumber()throwsException{ //创建CallableStatement对象 cs=conn.prepareCall("{callpro_emp_totalsal(?,?)}"); //注册一个输出参数 cs.registerOutParameter(2,OracleTypes.NUMBER); cs.executeQuery(); System.out.println("7788的年金是"+cs.getObject(2)); };测试结果: (3)调用有返回值是游标(cursor)类型的存储过程*调用有返回值是cursor类型的存储过程 *pro_emplist(dnonumber,emplistoutsys_refcursor) voidtestOracleCallProcedureOutCursor()"{callpro_emplist(?,10); OracleTypes.CURSOR); cs.executeQuery(); //需要强转OracleCallableStatement rs=((OracleCallableStatement)cs).getCursor(2); rs.next()){ System.out.println(rs.getObject(1)+":"+rs.getString("ename")); } }; 测试结果:4、实现函数的调用 (1)调用有返回值的类型的存储函数,返回值类型为number/** *调用有返回值的类型的存储函数 *fun_emp_totalsal(enonumber)returnnumber @throwsException */ @Test voidtestOracleCallFunctionReturnNumber()throwsException{ //创建CallableStatement对象 conn.prepareCall("{?=callfun_emp_totalsal(?)}"); //注册一个输出参数 cs.registerOutParameter(1,OracleTypes.NUMBER); cs.setInt(2,7788); cs.executeQuery(); System.cs.getObject(1)); }; 测试结果:(2) 调用有返回值类型的存储函数,返回值类型为varchar /** *调用有返回值的类型的存储函数,返回类型是varchar *fun_emp_dname(dnonumber)returndept.dname%type @throwsException */ @Test voidtestOracleCallFunctionReturnVarchar()throwsException{ //创建CallableStatement对象 "{?=callfun_emp_dname(?)}"); //注册一个输出参数 VARCHAR); cs.executeQuery(); System."部门名称是:"+cs.getObject(1)); }; 测试结果: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |