绑定到存储过程

时间:2015-09-24 08:39:05

标签: mysql

我需要根据现有表创建一个新表。使用Create table like不会创建约束。

为了解决这个问题,我尝试使用存储过程来完成它。

set @a = concat("SHOW CREATE TABLE ", tableName);
PREPARE stmt1 FROM @a ;
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1;

现在我想取出' EXECUTE stmt1'的输出。更改表名并执行它,以原始表结构的深层副本结束。

我想只使用Mysql脚本,我知道如何使用bash,golang,Java,PHP,......

  1. 我可以阅读"会话标准输出"我运行执行命令后立即?
  2. 使用CALL时是否可以获取存储过程的输出。例如:

    set res = call createCopy(tableName)
    

2 个答案:

答案 0 :(得分:0)

使用SQL(MySQL)脚本无法从SHOW语句结果中读取单元格。

我建议您使用CREATE TABLE with SELECT命令。它会起作用。

来自 CREATE TABLE ... SELECT语法文档:

  

您可以通过添加SELECT语句从另一个表创建一个表   CREATE TABLE语句的结尾。

答案 1 :(得分:0)

现在看来,有两种方法可以解决这个问题 1.使用CREATE LIKE并单独维护约束 2.使用BASH