mysql,程序中的语法问题

时间:2014-09-11 15:14:40

标签: 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是主表中的主键。

1 个答案:

答案 0 :(得分:1)

我能看到的两件小事。

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

其次,你在on duplicate key子句中设置了两次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