在MySQL中插入时出现语法错误

在MySQL中插入时出现语法错误,mysql,insert,Mysql,Insert,我正试图熟悉MySQL,但却感到沮丧 我正在尝试创建一个函数 use mystuff; DELIMITER $$ create PROCEDURE spUpdateCodeTable( IN mcodeID INT, IN mtableCode CHAR(5), IN mDescription VARCHAR(100), IN mCode CHAR(5), IN mgroupCode CHAR(5), IN mt1 VARCHAR(100),

我正试图熟悉MySQL,但却感到沮丧

我正在尝试创建一个函数

use mystuff;
DELIMITER $$
create PROCEDURE spUpdateCodeTable(
   IN mcodeID INT,
   IN mtableCode CHAR(5), 
   IN mDescription VARCHAR(100), 
   IN mCode CHAR(5), 
   IN mgroupCode CHAR(5), 
   IN mt1 VARCHAR(100), 
   IN mt2 VARCHAR(100), 
   IN mt3 VARCHAR(100))
BEGIN
   UPDATE codeTable SET 
      tableCode =mtableCode,
      Description=mDescription,
      Code=mCode,
      groupCode=mgroupCode,
      t1=mt1,
      t2=mt2,
      t3=mt3,
      chaDate=NOW()
   WHERE codeID = mcodeID;

   IF (ROW_COUNT() < 1)
   BEGIN
      INSERT INTO codeTable (tableCode,Description,Code,groupCode,t1,t2,t3,createDate)
      VALUES (mtableCode,mDescription,mCode,mgroupCode,mt1,mt2,mt3,NOW());
   END;      
END$$
DELIMITER ;
使用mystuff;
分隔符$$
创建过程spUpdateCodeTable(
在mcodeID INT中,
在mtableCode字符(5)中,
在mDescription VARCHAR(100)中,
在mcodechar(5)中,
在mgroupCode字符(5)中,
在mt1 VARCHAR(100)中,
在mt2 VARCHAR(100)中,
在mt3中,VARCHAR(100))
开始
更新代码表集
tableCode=mtableCode,
Description=mddescription,
代码=mCode,
groupCode=mgroupCode,
t1=mt1,
t2=mt2,
t3=mt3,
chaDate=NOW()
其中codeID=mcodeID;
如果(行计数()<1)
开始
插入代码表(表代码、说明、代码、组码、t1、t2、t3、createDate)
值(mtableCode、mddescription、mCode、mgroupCode、mt1、mt2、mt3、NOW());
结束;
结束$$
定界符;
当我只有UPDATE部分时,这个过程编译得很好,但是当我添加了insert四行(从IF(ROW_COUNT()..)开始)之后,我就开始

#1064-您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以获取正确的语法
“开始

插入到codeTable(tableCode,Description,Code,groupCode,t1,t2,t'在第23行)

就像@Phil所说的,你需要

IF (ROW_COUNT() < 1) THEN
  INSERT INTO codeTable (tableCode,Description,CODE,groupCode,t1,t2,t3,createDate)
  VALUES (mtableCode,mDescription,mCode,mgroupCode,mt1,mt2,mt3,NOW());
END IF;
如果(行计数()<1),则
插入代码表(表代码、说明、代码、组码、t1、t2、t3、createDate)
值(mtableCode、mddescription、mCode、mgroupCode、mt1、mt2、mt3、NOW());
如果结束;
而不是你所拥有的

存储过程的MySQL错误消息不是很精彩吗?

.TL;DR -<代码>……然后……结束;如果/<代码> >如果在代码的开头放一个“代码”><代码>,它指示一个标头。