@michal kralik - за съжаление има грешка с MySQL C API, който PDO използва, което означава, че стартирането на вашия код, както по-горе, с някои версии на MySQL води до грешка:
Можете да видите доклада за грешка на bugs.mysql.com . Поправен е за версия 5.5.3+ и 6.0.8+.
За да заобиколите проблема, ще трябва да разделите входни и изходни параметри и да използвате потребителски променливи, за да съхранявате резултата по следния начин:
$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";