sub execute_query {
my $self = shift;
$self->build_query() unless ($self->{query});
- $self->{sth} = $self->{handle}->prepare($self->{query});
- return $self->{sth}->execute;
+ return $self->{handle}->do("declare csr cursor with hold for $$self{query}");
}
sub next {
return $self->next();
}
} else {
- my $data = $self->{sth}->fetchrow_hashref;
+ my $data = $self->{handle}->prepare('fetch 1 from csr')->execute->fetchrow_hashref;
if ($data) {
$r = $self->{breClass}->from_bare_hash($data);
if ($Marque::config->option_value('format') eq 'BRE') {
$self->{mfhds} = [$self->sres_for_bre($r)];
}
}
+ } else {
+ $self->{handle}->do('close csr');
}
}
# Common stuff that doesn't depend on record type.
sub execute_query {
my $self = shift;
$self->build_query() unless ($self->{query});
- $self->{sth} = $self->{handle}->prepare($self->{query});
- return $self->{sth}->execute;
+ return $self->{handle}->do("declare csr cursor with hold for $$self{query}");
}
sub next {
my $self = shift;
my $output;
- my $data = $self->{sth}->fetchrow_hashref;
+ my $data = $self->{handle}->prepare('fetch 1 from csr')->execute->fetchrow_hashref;
if ($data) {
my $format = $Marque::config->option_value('format');
}
}
}
+ } else {
+ $self->{handle}->do('close csr');
}
return $output;