oracle存储过程jdbc调用

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

 


 

posted @ 2017-03-14 20:05  郭鑫  阅读(1467)  评论(0编辑  收藏  举报