groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From arthur_ram...@mediture.com
Subject Groovy SQL stored procedure result processing
Date Mon, 25 May 2015 19:07:40 GMT
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? 



Mime
View raw message