package com.jckb.procedure; import java.sql.CallableStatement; import java.sql.Connection; import java.sql.DriverManager; public class MainTest { /** * 存储过程plsql create or replace procedure findEmpInfo(pno in number,pname out varchar2,psal out number) as begin select ename,sal into pname,psal from emp where empno=pno; end; / * */ public static void main(String[] args) { //1、定义变量 String driverClass = "oracle.jdbc.OracleDriver"; String url = "jdbc:oracle:thin:@localhost:1521:orcl"; String user = "scott"; String password = "tiger"; try{ Class.forName(driverClass); //2、获取连接对象 Connection connection = DriverManager.getConnection(url, user, password); //3、创建执行存储过程的语句对象 String sql = "{call findEmpInfo(?,?,?)}"; CallableStatement callableStatement = connection.prepareCall(sql); //4、设置参数 callableStatement.setInt(1, 7902); callableStatement.registerOutParameter(2, oracle.jdbc.OracleTypes.VARCHAR); callableStatement.registerOutParameter(3, oracle.jdbc.OracleTypes.NUMBER); //5、执行 callableStatement.execute(); //6、获取数据 String ename = callableStatement.getString(2); double sal = callableStatement.getDouble(3); System.out.println("姓名:"+ename+" 员工工资:"+sal); //7、释放资源 }catch(Exception e){ e.printStackTrace(); } } }