sql >> Databasteknik >  >> RDS >> Mysql

Varför säger MySQL Workbench till mig att jag behöver ett semikolon?

Jag tror att problemet är:du använder inte DELIMITER .

Så uttryck det så här:

DELIMITER //
create procedure AddColumnUnlessExists(
    IN dbName tinytext,
    IN tableName tinytext,
    IN fieldName tinytext,
    IN fieldDef text)
begin
    IF NOT EXISTS (
        SELECT * FROM information_schema.COLUMNS
        WHERE column_name=fieldName
        and table_name=tableName
        and table_schema=dbName
        )
    THEN
        set @ddl = CONCAT('ALTER TABLE ', dbName, '.', tableName, ' ADD COLUMN ', fieldName, ' ', fieldDef);
        prepare stmt from @ddl;
        execute stmt;
    END IF;
end //
DELIMITER ;

REDIGERA https://dev.mysql.com/doc /refman/5.7/en/stored-programs-definining.html



  1. När ska man använda LEFT JOIN och när ska man använda INNER JOIN?

  2. Jämför RDS vs EC2 för att hantera MySQL eller MariaDB på AWS

  3. Hur använder jag MySQL genom XAMPP?

  4. PostgreSQL konvertera kolumner till rader? Transponera?