次のようなmysqlプロシージャでテーブルを作成したい
DROP TABLE IF EXISTS a;
CREATE TABLE a AS SELECT * FROM (CALL(abcdef(abc)));
どうすればそれを行うことができますか、またはmysqlでは不可能ですか?
ストアド プロシージャは何も返さないため、質問で構文を使用することはできません (OUT
またはとして構成されている場合、一部のパラメーターの値を変更できますがINOUT
)。
次のことをお勧めします。
行を一時テーブルに格納するように手順を変更します。
CREATE TEMPORARY TABLE temp_table(...);
INSERT INTO temp_table VALUES(...); // do that for all the data
プロシージャ コールの後、テーブルを直接使用するかtemp_table
( SELECT ... FROM temp_table
)、次のクエリを実行します。
CREATE TABLE a AS SELECT * FROM temp_table;
必要がなくなったら、一時テーブルを削除できます。そうしないと、MySQL 接続が閉じられたときに自動的に削除されます。