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