现在做的项目要hibernate+struts2 要用到存储过程取值,用hibernate怎么调用有两个返回值的存储过程 请高手指教给点提示
解决方案 »
- MessageDrivenBean和JMS有什么区别和联系?JMS和WebService有什么区别和联系?SessionBean的作用是什么?
- 莫名其妙!急~~ 请进
- 请高人指点,帮个忙(SAAS)
- myeclipse发布项目时出错,显示Source not found for Properties$LineReader.readLine() line: not available !!!!!
- 关于1:N的记录的添加
- SessionBean 中调用 HttpURLConnection发送请求信息没有问题,但是其他获取服务器信息出错.
- 救火啊!急!关于spring和hibernate的问题
- struts的这个异常是啥子??
- 有用过Dreamweaver Ultradev + Resin 开发的大侠请进!
- Applet与数据库与Servlet的问题,分数不够可以再加
- spring javamail 如何发送动态生成的附件?
- spring aop :NoClassDefFoundError
Connection conn = session.connection();
ResultSet rs =null;
CallableStatement call = conn.prepareCall("{Call proc(?,?,?)}");
call.setString(0,"abc");
call.registerOutParameter(1, Types.VARCHAR);
call.registerOutParameter(2,Types.VARCHAR);
rs = call.executeQuery();
if(rs.next()){
System.out.println("存储过程得到的第一个返回值是:"+rs.getString(1));
System.out.println("存储过程得到的第二个返回值是:"+rs.getString(2));
}
Session session = HibernateSessionFactory.getSession();
Connection con = null;
CallableStatement cstmt = null;
ResultSet rs= null;
Transaction tr = null;
String backValue ="";
String backStr;
try{
tr = session.beginTransaction();
con = session.connection();
try {
cstmt = con.prepareCall(" call ${SHOP88.Sp_aj001_iu(?,?,?,?,?,?,?,?,?,?,?,?,?)}");
cstmt.registerOutParameter(1, Types.NUMERIC);
cstmt.registerOutParameter(2, Types.VARCHAR);
cstmt.setBigDecimal(3, orderNum);
cstmt.setBigDecimal(4, customId);
cstmt.setDouble(5, allPrice);
cstmt.setDouble(6,ACCTF_SEND_SCHD_AMT);
cstmt.setString(7, "CD1");
cstmt.setString(8, "ITV");
cstmt.setDouble(9, CARD_APPR_AMT);
cstmt.setDouble(10,ACCM_APPLY_AMT);
cstmt.setDouble(11, CRDT_APPLY_AMT);
cstmt.setDouble(12, PCARD_APPLY_AMT);
cstmt.setString(13, "ITV");
rs = cstmt.executeQuery();
if(rs.next()){
System.out.println("存储过程得到的第一个返回值是:"+rs.getString(1));
System.out.println("存储过程得到的第二个返回值是:"+rs.getString(2));
}
//backValue = cstmt.getString(1);
//backStr = cstmt.getString(2);
// System.out.println(cstmt.getString(1)+"====");
// if(backValue.equals(0) ){
// System.out.println("正常");
// return true;
// }
} catch (SQLException e) {
e.printStackTrace();
}
}catch(HibernateException e){
}
这个报错 是什么情况啊Exception in thread "main" java.lang.NullPointerException
at oracle.jdbc.driver.T4C8Oall.getNumRows(T4C8Oall.java:870)
at oracle.jdbc.driver.T4CCallableStatement.executeForRows(T4CCallableStatement.java:957)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1160)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at com.tuge.iptv.order.dao.impl.OrderGoodsDAOImpl.orderStatus(OrderGoodsDAOImpl.java:117)
at com.tuge.iptv.util.Test.main(Test.java:66)
Sp_aj001_iu (
an_rtn_code OUT NUMBER, --返回代码,负数说明有错误
av_rtn_msg OUT VARCHAR2, --返回信息
an_ORD_ID IN tb_aj001.ord_id%TYPE,
an_CUST_ID IN tb_aj001.cust_id%TYPE,
an_TOT_ORD_AMT IN tb_aj001.tot_ord_amt%TYPE,
an_acctf_send_schd_amt IN tb_aj001.acctf_send_amt%TYPE,
av_SEND_BANK_CD IN tb_aj001.send_bank_cd%TYPE,
av_SENDER IN tb_aj001.sender%TYPE,
an_CARD_APPR_AMT IN tb_aj001.card_appr_amt%TYPE,
an_ACCM_APPLY_AMT IN tb_aj001.accm_apply_amt%TYPE,
an_CRDT_APPLY_AMT IN tb_aj001.crdt_apply_amt%TYPE,
an_PCARD_APPLY_AMT IN tb_aj001.pcard_apply_amt%TYPE,
av_etr_id IN VARCHAR2
)
存储过程