groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Paul King <pa...@asert.com.au>
Subject Re: Groovy SQL stored procedure result processing
Date Tue, 26 May 2015 08:20:52 GMT

I am not a Perl expert but from what I see here, you should only need to use
rows or eachRow. Does the stored procedure definition have any OUT params?
It doesn't look like it from the Perl.

Cheers, Paul.

On 26/05/2015 5:07 AM, arthur_ramsey@mediture.com wrote:
> 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?
>
>
>
>
>


---
This email has been checked for viruses by Avast antivirus software.
http://www.avast.com


Mime
View raw message