在创建数据库和 table 之前创建一个过程

Creating a Procedure prior to the creation of database and table

我想在创建数据库的过程中创建一个过程,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 - PROCEDURE database_sensor1.MYLOOP does not exist

我正在尝试通过快速更改 table 添加 32 列来使用循环 table 创建的过程,以便我可以 运行 另一个 .php 添加值。

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();

版本:

  1. IF database_name EXISTS 构造不存在。删除。见第 3 版。
  2. 过程创建代码未使用定界符完成。已添加。
  3. 没有明确指定必须在其中创建过程的数据库。添加。如果数据库不存在,则会生成错误。与 table 名称相同。