@michal kralik - leider gibt es einen Fehler in der MySQL-C-API, die PDO verwendet, was bedeutet, dass die Ausführung Ihres Codes wie oben mit einigen Versionen von MySQL zu folgendem Fehler führt:
Sie können den Fehlerbericht auf bugs.mysql.com einsehen . Es wurde für Version 5.5.3+ und 6.0.8+ behoben.
Um das Problem zu umgehen, müssten Sie Eingangs- und Ausgangsparameter trennen und Benutzervariablen verwenden, um das Ergebnis wie folgt zu speichern:
$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";