DBI begin_work não funciona com chamadas de procedimento armazenado

stou tentando fazer uma chamada para um procedimento armazenado de em uma transação em sua 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;

isso fornece o seguinte erro:

DBD driver has not implemented the AutoCommit attribute

Se eu substituir a instrução begin_work por$dbh->{'AutoCommit'} = 0; (antes ou depois da preparação), recebo este erro:

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

Se eu substituir a chamada de procedimento armazenado por uma instrução select simples, tudo funcionará be

O procedimento armazenado inclui várias atualizações e termina com uma instrução select. Obviamente, seria mais fácil se eu pudesse lidar com a transação dentro do procedimento descrito, preciso executar algum código perl se ocorrer uma reversão.

Estou usando o ActivePerl no Windows 7 e uma instância da Amazon Cloud executando o Centos com o DBI 1.616 instalado. Isso ocorre nos doi

Deve funcionar ou existe uma maneira de contornar isso?

Obrigad

questionAnswers(2)

yourAnswerToTheQuestion