mysql,程序中的语法问题

标签 mysql syntax

我在 mysql 过程中遇到语法问题

CREATE PROCEDURE savep(
        IN p_uuid  VARCHAR(36),
        IN p_sp    INTEGER,
        IN p_cd    VARCHAR(250)
        ) 
BEGIN 
           INSERT INTO maintable 
                (
                    uuid, 
                    sp,
                    cd,
                    last_time_saved
                )
           VALUES
                (
                    p_uuid,  
                    p_sp,
                    p_cd,
                    now()
                )
           ON DUPLICATE KEY UPDATE
                sp =   VALUES(p_sp),
                cd =   VALUES(p_cd),
                cd =   VALUES(now()); -- syntaxerror, unexcepted NOW_SYM
        END -- syntax error, unexcepted END

我做错了什么? uuid 是主表中的主键。

最佳答案

我可以看到两件小事。

您没有在顶部设置分隔符(但您可能在尝试使用的版本中设置了分隔符)。

其次,您在 on重复键子句中设置 cd 两次,其中之一是将其设置为 VALUES(now()) ,其中括号中应该是 a 的名称其值来自您要设置的插入的 VALUES 子句的列。

试试这个:-

DELIMITER //
CREATE PROCEDURE savep(
        IN p_uuid  VARCHAR(36),
        IN p_sp    INTEGER,
        IN p_cd    VARCHAR(250)
        ) 
BEGIN 
           INSERT INTO maintable 
                (
                    uuid, 
                    sp,
                    cd,
                    last_time_saved
                )
           VALUES
                (
                    p_uuid,  
                    p_sp,
                    p_cd,
                    now()
                )
           ON DUPLICATE KEY UPDATE
                sp =   VALUES(p_sp),
                cd =   VALUES(p_cd),
                last_time_saved =   now();
        END 

关于mysql,程序中的语法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25791181/

相关文章:

php - 搜索查询,例如 Twitter 热门话题

mysql - 在mysql全文搜索中搜索名称 "Will"

mysql - 数据库设计: split column with multiple data types

c - void *(*routine)(void *) 在 C 中是什么意思?

mysql - 如何在返回行 id 时将多行插入到 Mysql 表中并忽略重复行?

javascript - '{ }' 在 javascript 中的含义

php - php中@字符的含义

编码恐怖或绝妙想法的 C++ 示例?

c++ - 您可以在引用文献中用 bitand 替换 & 吗?

MySQL 使用 ORDER BY 子句进行子查询总是在父查询中以相同的顺序进行 GROUP BY