Как выполнить итерацию по набору результатов и распечатать в консоли запрос JDBC, инициированный из пробоотборника beanshell

#jdbc #jmeter #beanshell

Вопрос:

Отправка следующего запроса JDBC от JMeter с использованием пробоотборника beanshell. И теперь я хочу получить результат в виде тела ответа, полученного в JMeter, которое показывает пустоту, но успешно запускает запрос.

Код для запроса JDBC:

 import java.sql.*;
import oracle.jdbc.*;
import org.apache.jmeter.protocol.jdbc.config.DataSourceElement;

ResultSet rs = null;
ResultSetMetaData rsmd = null;
PreparedStatement pstmt = null;

Connection conn = DataSourceElement.getConnection("IMPACTConnectionPrerequisitsII");
String Query = "DECLARE n" 
             "j number(4); n"
             "BEGIN n"
             "FOR j in 22 .. 23 LOOP n"
             "INSERT INTO FWA_STAGE_TU n"
             "(ID,EXT_ID,BATCH_NO,OPERATION,BLOCK_ROLL_UP_LAST_RECORD,LAST_UPDATED_DATE,ERROR_FLAG,TRIAL_NO,TRIAL_ALIAS_CODE, n"
             "COUNTRY_CODE,DISPLAY_UNIT_NO,GROUP_NO,TRIAL_UNIT_REFERENCE,PRIMARY_INVESTIGATOR,PRIMARY_CENTRE,LOCATION_NO, n"
             "PURPOSE_CODE,MANAGING_MED_UNIT_CODE,UPDATING_MED_UNIT_CODE,FINANCE_MED_UNIT_CODE,PATIENTS_ALL_SET_UP_FLAG, n"
             "PATIENT_MONITORING_FLAG,COMMENTS,CONFIRMED_FLAG,CONFIRMED_BY,CONFIRMED_DATE,ROLLUP_ROLLDOWN_PLANNED_FIGS, n"
             "DOC_COLLECTION_INDICATOR,VALIDATED_PAT_CAP,MAXIMUM_PAT_CAP,PREFERRED_LANGUAGE_CODE,NEW_DISPLAY_UNIT_NO, n"
             "TOTAL_OPEN_DCF_ISSUES_NO,ORDER_INTERVAL,ORDER_INTERVAL_UNITS,DATA_SOURCE_CODE,RANK_SEQ) n"
             "VALUES (j, 1, 10, 'I', NULL, SYSDATE, 'N', 102922, 'TESTTRIAL4', 'BEL', n"
             "j, NULL, 'BELTU'||j, 130262, 124236, NULL, 'PATTR', 'FP', 'FP', 'FP', 'N', 'Y', 'TESTTU'||j, n"
             "'Y', 999999, SYSDATE, NULL, 'P', 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL); n"
             "END LOOP; n"
             "END;";
try {
    pstmt = conn.prepareStatement(Query);
    pstmt.executeUpdate();
    }
catch(Throwable ex) {
    log.error("Error message: ", ex);
    throw ex;
}
finally {
    if (rs != null) {
        rs.close();
        log.info("!!!! ResultSet Connection Closed !!!!");
    }
    if (pstmt != null) {
        pstmt.close();
    }
    if (conn != null) {
        conn.close();
        log.info("!!!! Connection closed to database !!!!");
    }
}
 

Детали подключения в JMeter

введите описание изображения здесь

Успешный Запуск

введите описание изображения здесь

введите описание изображения здесь

Ответ №1:

Я не думаю, что у вас есть «Набор результатов» для «итерации», чтобы просмотреть PreparedStatement.executeUpdate() документацию по функциям

ВОЗВРАТ:

либо (1) количество строк для операторов языка обработки данных SQL (DML), либо (2) 0 для операторов SQL, которые ничего не возвращают

Таким образом, в лучшем случае вы можете получить количество строк, на которые повлияет ваш SQL-запрос.

Также имейте в виду, что начиная с JMeter 3.1 вы должны использовать тестовые элементы JSR223 и язык Groovy для написания сценариев.

Дополнительная информация: