sql >> データベース >  >> RDS >> Mysql

MySQL Workbenchがセミコロンが必要だと言っているのはなぜですか?

    問題は、DELIMITERを使用していないことだと思います。 。

    だから、このように言ってください:

    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 ;
    

    編集 https://dev.mysql.com/doc /refman/5.7/en/stored-programs-defining.html



    1. MySQLクエリGROUPBY日/月/年

    2. サーバー内のデータベースに接続するフラッター

    3. 関係する3つのテーブルからのSQLデータの選択

    4. mysqldumpはcrontabでは機能しません