我想在mysql过程中创建表,比如
DROP TABLE IF EXISTS a;
CREATE TABLE a AS SELECT * FROM (CALL(abcdef(abc)));
有什么想法我该怎么做,或者在 mysql 中是不可能的?
您不能在问题中使用语法,因为存储过程不返回任何内容(即使它可以更改其某些参数的值,如果配置为OUT
or 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 连接关闭时自动丢弃。