Wie verwende ich jmeter, um eine gespeicherte Oracle-Prozedur mit dem Rückgabetyp sys_refcursor zu testen?

Ich möchte eine gespeicherte Oracle-Prozedur mit jmeter testen. Ich habe bis auf die Parameter alles getan.

Und hier ist meine SQL-Abfrage:

deklariere outinfo varchar2 (20); outtable sys_refcursor; begin {Rufe RK_JSCX (?,?)} auf; Ende;

Die Outtable in Oracle ist ein Cursor. Und ich habe ResultSet verwendet, um es in Java zu enthalten. Was auch immer ich in Parametertypen festgelegt habe, es sagte ungültigen Typ.

Sample Start: 2012-10-25 16:06:41 CST Ladezeit: 0 Latenz: 0 Größe in Bytes: 25 Headergröße in Bytes: 0 Bodygröße in Bytes: 25 Sample Count: 1 Fehleranzahl: 1 Antwortcode: null 0 Antwortnachricht: java.sql.SQLException: Ungültiger Datentyp: cursor

Antwort-Header: oracle.jdbc.driver.T4CConnection@58ba09

SampleResult-Felder: ContentType: text / plain DataEncoding: UTF-8

Wie kann das behoben werden? Vielen Dank!

Hier ist mein Code in 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);
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage