0

我想在mysql过程中创建表,比如

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

有什么想法我该怎么做,或者在 mysql 中是不可能的?

4

1 回答 1

1

您不能在问题中使用语法,因为存储过程不返回任何内容(即使它可以更改其某些参数的值,如果配置为OUTor INOUT)。

我建议如下:

  • 修改过程以将行存储在临时表中:

    CREATE TEMPORARY TABLE temp_table(...);
    INSERT INTO temp_table VALUES(...); // do that for all the data
    
  • 过程调用后,要么直接使用表temp_tableSELECT ... FROM temp_table),要么执行以下查询:

    CREATE TABLE a AS SELECT * FROM temp_table;
    
  • 当您不再需要它时,您可以删除临时表。否则会在 MySQL 连接关闭时自动丢弃。

于 2012-08-25T10:29:25.140 回答