Как я уже сказал, я заменил оператор begin_work на autoCommit => 0, никогда не использовал их вместе, однако ни одна из них не работает с хранимой процедурой. Я использую DBD :: mysql 4.019

аюсь сделать вызов хранимой процедуры из с в транзакции в ее упрощенной форме:

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;

это дает следующую ошибку:

DBD driver has not implemented the AutoCommit attribute

Если я заменю оператор begin_work на$dbh->{'AutoCommit'} = 0; (до или после подготовки) я получаю эту ошибку:

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

Если я заменю вызов хранимой процедуры простым оператором select, все будет работать нормально.

Хранимая процедура включает в себя ряд обновлений и завершается оператором выбора. Конечно, было бы проще, если бы я мог обработать транзакцию в рамках процедуры, в которой я нуждаюсь для действия некоторого perl-кода, если произойдет откат.

Я использую ActivePerl на Windows 7 и экземпляр облака Amazon с запущенным Centos с установленным DBI 1.616, это происходит на обоих.

Должно ли это работать или есть ли способ обойти это?

Спасибо