0

次のようなmysqlプロシージャでテーブルを作成したい

DROP TABLE IF EXISTS a;
CREATE TABLE a AS SELECT * FROM (CALL(abcdef(abc)));

どうすればそれを行うことができますか、またはmysqlでは不可能ですか?

4

1 に答える 1

1

ストアド プロシージャは何も返さないため、質問で構文を使用することはできません (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 接続が閉じられたときに自動的に削除されます。

于 2012-08-25T10:29:25.140 に答える