我可以使用存储过程创建表吗?
我正在使用 MySQL。我在网上搜索了有关如何使用存储过程创建表的说明,但没有找到任何结果,我只是发现可以创建临时表。如果我使用存储过程创建表有什么问题吗?
实际上我想检查一个表是否存在,然后我必须创建它。
我可以使用存储过程创建表吗?
我正在使用 MySQL。我在网上搜索了有关如何使用存储过程创建表的说明,但没有找到任何结果,我只是发现可以创建临时表。如果我使用存储过程创建表有什么问题吗?
实际上我想检查一个表是否存在,然后我必须创建它。
您可以使用 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;
|
编辑:谢谢彼得!所以这个特定问题的解决方案:
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 的一个非常有用的 tut:
http://rpbouman.blogspot.com/2005/11/mysql-5-prepared-statement-syntax-and.htmlenter code here
El autor de la respuesta: Conrad Ljungström
原文链接: https ://forums.mysql.com/read.php? 98,495352
您可以毫无问题地在存储过程中创建表。例子:
delimiter |
create procedure createtab ()
begin
create table a(id int);
insert into a select 1;
select * from a;
drop table a;
end
|
delimiter ;
像这样的东西应该工作。
delimiter |
CREATE PROCEDURE SP_CREATE_TABLE( )
BEGIN
CREATE TABLE employees (emp_id int, emp_name varchar(100));
END;
|