Това е малко лоша характеристика на PDO, която не е добре документирана. Методът closeCursor не работи, когато изразът е изпълнил съхранена процедура. Трябва да използвате метода nextRowSet. Ето какво използвам
while($sth->nextRowSet())
{
$sth->fetchAll();
}
$sth->closeCursor();