groovy-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Arthur Ramsey <arthur_ram...@mediture.com>
Subject Re: Groovy SQL stored procedure result processing
Date Tue, 26 May 2015 22:29:21 GMT
sql.eachRow'call spLoad_whse_subjectarea(?,?,?,?,?,?,?)', [in_step, run_step, in_step_title,
in_procedure, in_current_stmt, in_start_data, in_run_count], {row  ->
     log.info(row.toString())
}

I think the issue is the rows come in separate result sets.

On 5/26/2015 3:51 PM, Paul King wrote:
>
> Can you show us how you used eachRow?
>
> Cheers, Paul.
>
> On 27/05/2015 1:05 AM, Arthur Ramsey wrote:
>> I tried eachRow and only get the first row.  No there are no OUT params.
>>
>> On 5/26/2015 3:20 AM, Paul King wrote:
>>>
>>> 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
>>>
>>
>>
>>
>>
>
>
> ---
> This email has been checked for viruses by Avast antivirus software.
> http://www.avast.com
>



Mime
View raw message