在创建数据库和表之前创建一个过程
Posted
技术标签:
【中文标题】在创建数据库和表之前创建一个过程【英文标题】:Creating a Procedure prior to the creation of database and table 【发布时间】:2021-05-31 14:42:17 【问题描述】:我在创建数据库的过程中尝试创建Procedure,mysql查询如下:
CREATE DATABASE database_Sensor1;
USE database_Sensor1;
CREATE TABLE Persons(id int NOT NULL);
DELIMITER //
CREATE PROCEDURE MYLOOP() IF database_Sensor1 EXISTS
BEGIN
DECLARE i int;
DECLARE str varchar(255);
SET i = 0;
WHILE i < 32 DO
SET str = CONCAT('col_',i);
SET @sql = CONCAT('ALTER TABLE persons ADD ',str,' float;');
SET i = i + 1;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END WHILE;
END
DELIMITER ;
CALL MYLOOP();
但我收到此错误:
#1305 - 过程 database_sensor1.MYLOOP 不存在
我正在尝试使用过程来循环创建表,方法是快速更改表以添加 32 列,以便我可以运行另一个 .php 来添加值。
【问题讨论】:
【参考方案1】:CREATE DATABASE database_Sensor1;
USE database_Sensor1;
CREATE TABLE database_Sensor1.Persons(id int NOT NULL);
DELIMITER //
CREATE PROCEDURE database_Sensor1.MYLOOP()
BEGIN
DECLARE i int;
DECLARE str varchar(255);
SET i = 0;
WHILE i < 32 DO
SET str = CONCAT('col_',i);
SET @sql = CONCAT('ALTER TABLE database_Sensor1.persons ADD ',str,' float;');
SET i = i + 1;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END WHILE;
END
//
DELIMITER ;
CALL MYLOOP();
版本:
IF database_name EXISTS
构造不存在。已移除。见第 3 版。
过程创建代码未使用定界符完成。已添加。
未明确指定必须在其中创建过程的数据库。添加。如果数据库不存在,则会产生错误。与表名相同。
【讨论】:
以上是关于在创建数据库和表之前创建一个过程的主要内容,如果未能解决你的问题,请参考以下文章
在 PostgreSQL 中为特定模式和表所有者创建表的过程是啥