Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql使用函数插入列_Mysql_Sql_Mysql Function - Fatal编程技术网

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),

如果表中存在列,我想添加列。但是我的代码不工作,我得到错误信息是

[Err]1064-您的SQL语法有错误;检查手册 对应于正确语法的MariaDB服务器版本 要使用near'ColumnType DEFAULT(如果为NULL,则为CASE DefaultValue 在第11行选择“NULL”

我的代码MySql代码块

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分支。好的,谢谢您提供的信息