DBI begin_work no funciona con llamadas a procedimientos almacenados

Estoy tratando de hacer una llamada a un procedimiento almacenado desde dentro de una transacción en su forma simplificada:

my $dbh= DBI->connect(............  );  

my $sth = $dbh->prepare("call sp_get_workitems (1,1)");
$dbh->begin_work  or die $dbh->errstr;
$sth->execute();
my ($result)= $sth->fetchrow_array();

$dbh->commit;

esto da el siguiente error:

DBD driver has not implemented the AutoCommit attribute

Si reemplazo la declaración begin_work con$dbh->{'AutoCommit'} = 0; (antes o después de la preparación), aparece este error:

DBD::mysql::db commit failed: Commands out of sync; you can't run this command now

Si reemplazo la llamada al procedimiento almacenado con una simple instrucción select, todo funciona bien.

El procedimiento almacenado incluye una serie de actualizaciones y termina con una instrucción select. Por supuesto, sería más fácil si pudiera manejar la transacción dentro del procedimiento puesto que necesito actuar algún código perl si ocurre la reversión.

Estoy usando ActivePerl en Windows 7 y una instancia de Amazon Cloud que ejecuta Centos con DBI 1.616 instalado, esto ocurre en ambos.

Debería funcionar esto o hay alguna forma de evitarlo?

Gracia

Respuestas a la pregunta(2)

Su respuesta a la pregunta