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? 


Reply via email to