2014-09-11 3 views
0

я проблемы с синтаксисом в процедуре тузда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

Две незначительные вещи, которые я вижу.

У вас нет ограничителя в верхней части (но вы можете иметь это в той версии, которую вы пытаетесь использовать).

Во-вторых вы настраиваете кд дважды в на дубликата ключа статьи, и один из тех, кто устанавливает его VALUES (NOW()), где что должно быть в скобках имя столбца, значение которого из предложение 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 
Смежные вопросы