【问题标题】: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 来添加值。

【问题讨论】:

    标签: mysql database xampp procedure


    【解决方案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();
    

    版本:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 2011-10-07
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      • 2021-05-30
      相关资源
      最近更新 更多