Как использовать jmeter для тестирования хранимой процедуры Oracle с типом возвращаемого значения sys_refcursor?
Я хочу протестировать хранимую процедуру Oracle с помощью jmeter.Я сделал все, кроме параметров.
И вот мой SQL-запрос:
объявить outinfo varchar2 (20); outtable sys_refcursor; begin {call RK_JSCX (?,?)}; конец;
Outtable в Oracle - это курсор. И я использовал resultSet, чтобы содержать его в java. Однако, что бы я ни указывал в типах параметров, он указывал недопустимый тип.
Начало образца: 2012-10-25 16:06:41 CST Время загрузки: 0 Время ожидания: 0 Размер в байтах: 25 Размер заголовка в байтах: 0 Размер тела в байтах: 25 Количество образцов: 1 Количество ошибок: 1 Код ответа: ноль 0 Ответное сообщение: java.sql.SQLException: неверный тип данных: курсор
Заголовки ответа: oracle.jdbc.driver.T4CConnection@58ba09
Поля SampleResult: ContentType: текст / обычный DataEncoding: UTF-8
Как это можно исправить? Спасибо!
Вот мой код в Java:
public String RK_JSCX() throws Exception {
RK_JSCX_Response response = null;
List<RK_JSCX_Outtable> list = null;
Connection con = null;
CallableStatement cs = null;
ResultSet rs = null;
String sql = null;
try {
sql = "{call RK_JSCX(?,?)}";
con = ConnectionUtils.getInstance().getConnect();
if (con.isClosed()) {
throw new IllegalStateException("ERROR.THE CONNECTION ISCLOSED");
}
cs = con.prepareCall(sql);
cs.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
cs.registerOutParameter(2, Types.VARCHAR);
cs.execute();
rs = (ResultSet) cs.getObject(1);
list = new ArrayList<RK_JSCX_Outtable>();
while (rs.next()) {
RK_JSCX_Outtable out = new RK_JSCX_Outtable(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5), rs.getString(6));
list.add(out);
}
String outInfo = cs.getString(2);
response = new RK_JSCX_Response(list, outInfo);
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}finally {
try {
if (rs != null) {
rs.close();
if (cs != null) {
cs.close();
}
if (con != null) {
con.close();
}
}
} catch (SQLException e) {
System.out.println("Exception2");
e.printStackTrace();
}
}
return JSON.toJSONString(response);
}