以下のように列名を変更するストアドプロシージャを作成しました。
テーブル構造:
CREATE TABLE ``procedurecheck`` (
``id`` int(10) NOT NULL AUTO_INCREMENT,
``colname`` varchar(50) NOT NULL,
``proccheck1`` varchar(50) NOT NULL,
PRIMARY KEY (``id``)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
This is a test code only to check procedures.
DELIMITER $$
CREATE PROCEDURE updateColumn(IN COLNAME varchar (50), IN NEWCOLNAME varchar (50))
BEGIN
SET @ddl = CONCAT('alter table procedurecheck CHANGE (', COLNAME, ' ', NEWCOLNAME, ' VARCHAR(50) NOT NULL)');
PREPARE STMT FROM @ddl;
EXECUTE STMT;
END $$
DELIMITER ;
次を使用してこの関数を呼び出すと:
CALL updateColumn('proccheck','newproccheck');
次のようなエラーが表示されます。
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(proccheck newproccheck VARCHAR(50) NOT NULL)' at line 1
どんなポインタも役に立ちます。
ありがとう