Obrigado a JoshuaBoshi por sua resposta, que resolveu o problema. Depois de chamar o procedimento, tive que fechar o cursor e abri-lo novamente antes de usá-lo para executar outra instrução:
cursor.close()
cursor = connection.cursor()
O cursor pode ser fechado imediatamente após
fetchall()
. O conjunto de resultados ainda permanece e pode ser repetido.