首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -存储过程中的Alter table语法

MySQL -存储过程中的Alter table语法
EN

Stack Overflow用户
提问于 2013-06-24 15:07:30
回答 2查看 2.6K关注 0票数 0

我已经创建了一个存储过程来更改列名,如下所示。

表结构:

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.

代码语言:javascript
运行
复制
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

任何提示都会很有帮助。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-24 15:14:38

删除(),例如。

代码语言:javascript
运行
复制
CONCAT('alter table procedurecheck CHANGE ', COLNAME, ' ', NEWCOLNAME, ' VARCHAR(50) NOT NULL');
票数 1
EN

Stack Overflow用户

发布于 2017-03-07 15:38:37

您可以尝试以下存储过程:

代码语言:javascript
运行
复制
DROP PROCEDURE IF EXISTS pl_alterColumnName;
DELIMITER $$
CREATE PROCEDURE pl_alterColumnName(IN tblName varchar (50), IN COLNAME varchar (50), IN NEWCOLNAME varchar (50))
BEGIN
  SET @ddl = CONCAT(' alter table ', tblName  ,' CHANGE ', COLNAME, ' ', NEWCOLNAME, ' VARCHAR(50) NOT NULL');
  PREPARE STMT FROM @ddl;
  EXECUTE STMT;
END $$
DELIMITER ;
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17269788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档