mysql程序创建表为select(call(abc(xy)))

时间:2012-05-06 11:08:47

标签: mysql call

我想在mysql程序中创建表,如

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

任何想法我怎么能这样做,或者在mysql中是不可能的?

1 个答案:

答案 0 :(得分:1)

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

我建议如下:

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

    INOUT
  • 在程序调用之后,直接使用表CREATE TEMPORARY TABLE temp_table(...); INSERT INTO temp_table VALUES(...); // do that for all the data temp_table),或执行以下查询:

    SELECT ... FROM temp_table
  • 当您不再需要它时,您可以删除临时表。否则,当MySQL连接关闭时,它将自动被删除。