@michal kralik - niestety jest błąd w interfejsie MySQL C API, którego używa PDO, co oznacza, że uruchomienie kodu jak powyżej z niektórymi wersjami MySQL powoduje błąd:
Możesz zobaczyć raport o błędzie na bugs.mysql.com . Zostało to naprawione dla wersji 5.5.3+ i 6.0.8+.
Aby obejść ten problem, musisz oddzielić parametry wejściowe i wyjściowe oraz użyć zmiennych użytkownika do przechowywania wyniku w następujący sposób:
$stmt = $dbh->prepare("CALL sp_takes_string_returns_string(:in_string, @out_string)");
$stmt->bindParam(':in_string', 'hello');
// call the stored procedure
$stmt->execute();
// fetch the output
$outputArray = $this->dbh->query("select @out_string")->fetch(PDO::FETCH_ASSOC);
print "procedure returned " . $outputArray['@out_string'] . "\n";