4
テーブルの列の名前を変更する必要があるときはいつでも、必要なパラメータを渡してエラーなく実行できるように、動的プロシージャを作成する必要があります。したがって、IFの検証。次のように変更するダイナミックプロシージャ列名
このコードによって生成されたエラーは次のとおりです。
あなたのSQL構文でエラーが発生しています。 が近く を使用する権利構文についてはMySQLサーバのバージョンに対応していること取扱説明書を確認してください「の場合EXISTS( TABLE_NAME = information_schema.columns SELECT * FROM 『の人々』」解決行1
DROP PROCEDURE IF EXISTS `change_column_name`;
DELIMITER ;;
CREATE PROCEDURE `change_column_name`(IN tableName VARCHAR(100), IN columnName VARCHAR(100), IN newColumnName VARCHAR(100), IN columnType VARCHAR(20), IN defaultValue VARCHAR(100))
BEGIN
SET @query = CONCAT('IF EXISTS (SELECT * FROM information_schema.columns WHERE table_name = \'', tableName, '\' AND column_name = \'', columnName, '\') THEN
ALTER TABLE \'', tableName, '\' CHANGE COLUMN \'', columnName, '\' \'', newColumnName, '\' ', columnType, ' DEFAULT ', defaultValue, ';
END IF;');
PREPARE stmt1 FROM @query;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END ;;
DELIMITER ;
CALL `change_column_name`('People', 'Nme', 'Name', 'VARCHAR(50)', 'NULL');
存在する場合(SELECTは.... SQLサーバの構文 –
@RaymondNijlandのNopです。あなたは同じコードを残して、パラメータを削除する場合は、ハードコードされたにすべてを変えますそれは動作します。 –
あなたがconcat関数を使用した方法は、SQLサーバー構文の検索です。 –