in src/protocol/jdbc/src/main/java/org/apache/jmeter/protocol/jdbc/AbstractJDBCTestElement.java [248:313]
private String resultSetsToString(PreparedStatement pstmt, boolean result, int[] out) throws SQLException, UnsupportedEncodingException {
configureMaxRows(pstmt);
StringBuilder sb = new StringBuilder();
int updateCount = 0;
boolean currentResult = result;
if (!currentResult) {
updateCount = pstmt.getUpdateCount();
}
do {
if (currentResult) {
ResultSet rs = null;
try {
rs = pstmt.getResultSet();
sb.append(getStringFromResultSet(rs)).append("\n"); // $NON-NLS-1$
} finally {
close(rs);
}
} else {
sb.append(updateCount).append(" updates.\n");
}
currentResult = pstmt.getMoreResults();
if (!currentResult) {
updateCount = pstmt.getUpdateCount();
}
} while (currentResult || (updateCount != -1));
if (out!=null && pstmt instanceof CallableStatement){
List<Object> outputValues = new ArrayList<>();
CallableStatement cs = (CallableStatement) pstmt;
sb.append("Output variables by position:\n");
for(int i=0; i < out.length; i++){
if (out[i]!=java.sql.Types.NULL){
Object o = cs.getObject(i+1);
outputValues.add(o);
sb.append("[");
sb.append(i+1);
sb.append("] ");
sb.append(o);
if( o instanceof java.sql.ResultSet && RS_COUNT_RECORDS.equals(resultSetHandler)) {
sb.append(" ").append(countRows((ResultSet) o)).append(" rows");
}
sb.append("\n");
}
}
String[] varnames = getVariableNames().split(COMMA);
if(varnames.length > 0) {
JMeterVariables jmvars = getThreadContext().getVariables();
for(int i = 0; i < varnames.length && i < outputValues.size(); i++) {
String name = varnames[i].trim();
if (name.length()>0){ // Save the value in the variable if present
Object o = outputValues.get(i);
if( o instanceof java.sql.ResultSet ) {
putIntoVar(jmvars, name, (java.sql.ResultSet) o);
} else if (o instanceof java.sql.Clob) {
putIntoVar(jmvars, name, (java.sql.Clob) o);
} else if (o instanceof java.sql.Blob) {
putIntoVar(jmvars, name, (java.sql.Blob) o);
}
else {
jmvars.put(name, o == null ? null : o.toString());
}
}
}
}
}
return sb.toString();
}