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