ストアドプロシージャでの無制限のselectの出力はクライアントに送信される結果セットであるため、これを直接行うことはできませんが、技術的にはテーブルではありません。
回避策は、テーブルを作成した後、procがデータを一時テーブルに配置できるようにすることです。このテーブルは、手順が終了したときに接続でのみ使用できます。他の誰かが同時にprocを実行し、他の接続からは見えない場合でも、競合は発生しません。
これを手順に追加します:
DROP TEMPORARY TABLE IF EXISTS foo;
CREATE TEMPORARY TABLE foo SELECT ... your existing select query here ...;
手順が終了したら、SELECT * FROM foo;
あなたがprocから得たであろうものをあなたに与えるでしょう。他のテーブルとほとんど同じように参加できます。
完了したら、ドロップします。そうしないと、切断したときに自動的に消えます。プロシージャを再度実行すると、プロシージャは削除されて再作成されます。