Hello,
I'm new to Groovy and I'm trying to port the following perl DBI code to Groovy
SQL. The code executes a stored procedure that produces multiple logging
statements as results (not an OUT parameter).
my $sth = $dbh->prepare("CALL spLoad_whse_subjectarea(?,true,?,?,?,?,?)");
$sth->execute($_[0],$_[1],$_[2],$_[3],$_[4],$_[5]);
do {
while (@row = $sth->fetchrow_array) {
foreach (@row) {
print "$_ ";
}
print "\n";
}
} while ($sth->more_results);
The following Groovy code captures everything, but it blocks until the stored
procedure completes unlike the perl code which processes results prior to
completion. The effect is delayed logging.
sql.execute( 'SET @data_history_units = ?' , data_history_units )
List<List<GroovyRowResult>> results = sql.callWithAllRows '{call
spLoad_whse_subjectarea(?,?,?,?,?,?,?)}' , [in_step, run_step, in_step_title,
in_procedure, in_current_stmt, in_start_data, in_run_count], {}
results.each { result -> result .each { row ->
row.each { log .info(it. value .toString())
}
}
}
I also tried sql.eachRow, but that seems to only get the first result. I had a
similar outcome with perl DBI before I added the "while ($sth->more_results)".
Is there anyway I can better emulate the perl code even if I have to interact
with jdbc more closely?