from test1';
OPEN p_rc FOR sqlstr;-- USING p_id
END IF;
END get;
END pkg_test;
/ --该斜线不可省略,否则有错
3.6 Java调用:
Session oracleSession = HibernateSessionFactory.getSession(); //Hibernate Session
Connection conn = oracleSession.connection(); //获取Oracle Connection
try {
CallableStatement proc = conn.prepareCall("{ call TESTA( ) }"); //调用无返回值的存储过程TESTA
proc.setString(1, "ss"); //设置存储过程中定义的参数,参数从1开始
oracleSession.beginTransaction();
proc.execute(); //运行存储过程
oracleSession.getTransaction().commit();
proc = conn.prepareCall("{ call pkg_test.get( , ) }"); //调用返回列表的存储过程
proc.setInt(1, 1); //设置存储过程的参数,从1开始
proc.registerOutParameter(2, oracle.jdbc.OracleTypes.CURSOR);
oracleSession.beginTransaction();
proc.execute(); //执行存储过程
oracleSession.getTransaction().commit();
ResultSet rs = (ResultSet) proc.getObject(2); //获取返回值,该处的2与存储过程定义时的输出参数位置对应。
StringBuilder result = new StringBuilder();
result.append("
| " + rs.getString(1) + " | " + rs.getString(2) + " |
request.setAttribute("result", result.toString());
} catch (Exception e) {
e.printStackTrace();
}