ssh的集成项目中如何调用mysql中既带输入参数又带输出参数的存储过程
drop procedure if exists pr_add;
DELIMITER $$
create procedure pr_add
(
    n varchar(20),
    pwd varchar(20),
    out cc varchar(20),
    out bb varchar(20)
)
begin
     select loginName as cc,loginPwd as bb from kcwms.userrole where loginName=n and loginPwd=pwd;
end;
$$call pr_add('admin','admin',@eaec,@bb);

解决方案 »

  1.   

    oracle的,mysql应该类似吧,还有一种方法是在hibernate中配置
    SessionFactory factory =  new Configuration().configure().buildSessionFactory();
    Session session = factory.openSession();
    Transaction trans = session.beginTransaction();
    Connection con = session.connection();
    CallableStatement st =  con.prepareCall("{call my_proc(?,?,?)}");
    st.setInt(1, 7788);
    st.registerOutParameter(2, OracleTypes.NUMBER);
    st.registerOutParameter(3, OracleTypes.VARCHAR);
    st.execute();
    System.out.println(st.getFloat(2));
    System.out.println(st.getString(3));
    st.close();
    con.close();
    trans.commit();
      

  2.   

    public int[] recharge(String cn, String cardPwd, String ip, int zoneId)
    throws Exception {
    CallableStatement call = null;
    int[] result = new int[2];
    try {
    String cal = "{call USER_CARDCHARGE(?,?,?,?,?,?)}";
    Connection conn = DBConnection.getConnection();
    call = conn.prepareCall(cal); call.setString(1, cn);
    call.setString(2, cardPwd);
    call.setString(3, ip);
    call.setLong(4, zoneId); call.registerOutParameter(5, 4);
    call.registerOutParameter(6, 4);
    call.executeUpdate(); result[0] = call.getInt(5);
    result[1] = call.getInt(6);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return result;
    }
      

  3.   

    st.registerOutParameter(2, OracleTypes.NUMBER);
    为什么报空指针呀?