存储过程创建表

时间:2012-06-19 12:13:44

标签: mysql stored-procedures

我们可以使用StoredProcedures创建表,我使用mysql,我已经在网上搜索使用存储过程创建表,但我没有找到,我发现我们可以创建临时表,如果我们创建表使用是否有任何问题存储过程?

其实我想检查天气表是否存在....然后必须创建..

4 个答案:

答案 0 :(得分:4)

您可以使用mysql中的过程创建表。

delimiter |
CREATE PROCEDURE SP_CREATE_TABLE_TEST ()
   BEGIN
      CREATE TABLE TEST 
      (
        TestID int(11) default NULL,
        TestName varchar(100) default NULL
      ) 
      ENGINE=InnoDB DEFAULT CHARSET=utf8;
   END;

|

Reference link.

答案 1 :(得分:1)


编辑:谢谢彼得!因此,解决此特定问题的方法:

DELIMITER //
CREATE PROCEDURE createTable(IN tableName VARCHAR(40))
BEGIN
SET @table := tableName;
SET @sql_text:=CONCAT('CREATE TABLE ',@table,'(id INT NOT NULL AUTO_INCREMENT, FILENAME VARCHAR(40) NOT NULL, DATA BLOB NOT NULL, PRIMARY KEY (ID))');

PREPARE stmt from @sql_text;
EXECUTE stmt;
END //
DELIMITER ;

除了手册,我还发现Roland Bouman的非常有用的话:

http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.html enter code here

El autor de la respuesta:ConradLjungström

原始链接:https://forums.mysql.com/read.php?98,495352

答案 2 :(得分:0)

您可以在存储过程中创建表而不会出现问题。例如:

delimiter |

create procedure createtab () 
begin 
    create table a(id int);
    insert into a select 1;
    select * from a;
    drop table a;
end
|

delimiter ;

答案 3 :(得分:0)

这样的事情应该有效。

delimiter |
CREATE PROCEDURE SP_CREATE_TABLE( )
BEGIN
  CREATE TABLE employees (emp_id int, emp_name varchar(100));
END;
|