创建存储过程:
**CREATE PROCEDURE productpricing(P_ID IN VARCHAR2,P_COUNT OUT NUMBER) BEGIN SELECT Count(prod_num) AS P_COUNT WHERE prod_id =P_ID FROM products; END;**
============================ jdbc调用:
/** 括号中的问号和存储过程参数进行匹配*/String sql = "{call productpricing(?,?)}";// 加载驱动程序Class.forName("oracle.jdbc.driver.OracleDriver");// 获取连接对象Connection con = DriverManager.getConnection(url, uid, pwd);// 获取执行对象CallableStatement cs = con.prepareCall(sql);cs.setString(1, "1a2b"); // out 注册的index 和取值时要对应 cs.registerOutParameter(2, Types.INTEGER); // 执行SQL命令cs.execute();
=============================== hibernate:
public Integer method(){ return (Integer) this.getHibernateTemplate().execute(new HibernateCallback(){ public Object doInHibernate(Session session){ Connection conn = session.connection(); String sql ="{call productpricing(?,?)}"; CallableStatement cs; Integer result=0; try { cs= conn.prepareCall(sql); cs.setString(1, "1a2b"); cs.registerOutParameter(2,Types.INTEGER); boolean rs= cs.execute(); tttrs=(Integer)cs.getInt(2); } catch (SQLException e) { System.out.println("sql异常:"+e.getMessage()); } return result; } }); }
================== mybatis: 编辑Mapper.xml文件,添加如下的配置项
调用:
SqlSession sqlSession = MyBatisUtil.getSqlSession();String statement = "me.gacl.mapping.userMapper.getCount";//映射sql的标识字符串 MapparameterMap = new HashMap (); parameterMap.put("p_id", "1a2b"); parameterMap.put("pcount", 0); sqlSession.selectOne(statement, parameterMap); Integer result = parameterMap.get("usercount"); System.out.println(result); sqlSession.close();