Mysql使用函数插入列
如果表中存在列,我想添加列。但是我的代码不工作,我得到错误信息是 [Err]1064-您的SQL语法有错误;检查手册 对应于正确语法的MariaDB服务器版本 要使用near'ColumnType DEFAULT(如果为NULL,则为CASE DefaultValue 在第11行选择“NULL” 我的代码MySql代码块Mysql使用函数插入列,mysql,sql,mysql-function,Mysql,Sql,Mysql Function,如果表中存在列,我想添加列。但是我的代码不工作,我得到错误信息是 [Err]1064-您的SQL语法有错误;检查手册 对应于正确语法的MariaDB服务器版本 要使用near'ColumnType DEFAULT(如果为NULL,则为CASE DefaultValue 在第11行选择“NULL” 我的代码MySql代码块 CREATE DEFINER = CURRENT_USER FUNCTION `AddTableColumn` ( TableName VARCHAR (500),
CREATE DEFINER = CURRENT_USER FUNCTION `AddTableColumn` (
TableName VARCHAR (500),
ColumnName VARCHAR (500),
IsPrimary TINYINT (4),
IsNull TINYINT (4),
DefaultValue VARCHAR (500),
ColumnType VARCHAR (500)
) RETURNS INTEGER
BEGIN
ALTER TABLE TableName ADD COLUMN
IF NOT EXISTS ColumnName ColumnType DEFAULT (
CASE DefaultValue
WHEN NULL THEN
SELECT
'NULL'
ELSE
SELECT
DefaultValue
END
)(
CASE IsNull
WHEN 1 THEN
(SELECT 'IS NULL')
ELSE
SELECT
('IS NOT NULL')
END
)(
CASE IsPrimary
WHEN 1 THEN
(SELECT 'PRIMARY KEY')
ELSE
SELECT
''
END
) RETURN 0;
END;
;
请不要随意标记数据库引擎!如果您没有使用SQL Server,请不要提及它。什么?我不明白您的意思?这是一个关于t-SQL语法的问题!MySQL使用t-SQL?新闻对我来说..我一辈子都在误解t-SQL->SQL Server。所以..我不确定您实际使用的是哪个数据库,但您似乎在尝试不使用o在调用ALTER TABLE时将列名存储为字符串,我不知道有哪个DB引擎支持这一点。实际上,您正在调用
ALTER TABLE'mytab'ADD column'mycol''varchar(500)
。在查询工具中执行的实际命令是ALTER TABLE mytab ADD column mycol varchar(500)
。您应该寻找更像EXEC'ALTER TABLE'+mytabname+'ADD COLUMN'+mycl
…@Zarzamora“Transact-SQL(T-SQL)是Microsoft和Sybase对用于与关系数据库交互的SQL(结构化查询语言)的专有扩展。”()。您的错误消息实际上是MariaDB,这是一个MySQL分支。好的,谢谢您提供的信息