our
$VERSION
=
'1.00'
;
our
@ISA
=
qw{ Net::Amazon::MechanicalTurk::RowData }
;
Net::Amazon::MechanicalTurk::RowData::SQLRowData->attributes(
qw{
dbh
sql
params
}
);
sub
init {
my
$self
=
shift
;
$self
->setAttributes(
@_
);
$self
->assertRequiredAttributes(
qw{ dbh sql }
);
}
sub
each
{
my
(
$self
,
$block
,
@blockXArgs
) =
@_
;
my
$sql
=
$self
->sql;
my
$sth
=
$self
->dbh->prepare(
$sql
);
if
(!
$sth
) {
Carp::croak(
"Couldn't prepare sql '$sql' - "
.
$self
->dbh->errstr .
"."
);
}
$sth
->{RaiseError} = 1;
eval
{
my
@params
;
@params
= @{
$self
->params}
if
$self
->params;
$sth
->execute(
@params
);
my
$rowNumber
= 0;
while
(
my
$row
=
$sth
->fetchrow_hashref) {
if
(
$rowNumber
++ == 0) {
$self
->fieldNames([@{
$sth
->{NAME}}]);
}
$block
->(
$self
,
$row
,
@blockXArgs
);
}
};
if
($@) {
$sth
->finish;
die
$@;
}
$sth
->finish;
}
return
1;