Tak PDO
może pobrać dwa (lub więcej) zestawy wierszy, o ile baza danych, której używasz, obsługuje to. Myślę, że MS SQL Server i MySQL oba obsługują tę funkcjonalność, ale w momencie pisania SQLite nie.
Żądaną funkcją jest PDOStatement::nextRowset
Więc w powyższym przykładzie możesz zrobić coś takiego;
$sth = $dbh->prepare("SELECT * FROM tb1 WHERE cond1;
SELECT * FROM tb2 WHERE cond2");
$sth->execute();
$rowset1 = $sth->fetchAll();
$sth->nextRowset();
$rowset2 = $sth->fetchAll();
print_r($rowset1);
print_r($rowset2);
Jest całkowicie rozsądne, aby pojedyncza procedura składowana zwróciła więcej niż jeden zestaw wierszy.