创建MySQL函数时的语法错误

时间:2019-09-10 16:08:26

标签: mysql function

我正在尝试在MySQL中创建一个函数,但是遇到语法错误。这是我的功能:

return new Promise(resolve) {
   var result = [];
   (function next() {
       var item = arr.shift();
       if (item) {
          doSomething(item).then(doSmethingElse).then((x) => {
             result.push(x);
             next();
          });
       } else {
          resolve(result);
       }
   })();
});

我在DELIMITER $$ CREATE FUNCTION gg () RETURNS char(8) DETERMINISTIC BEGIN DECLARE cod varchar(8); select RIGHT(MAX(idCurso),7) into cod from Curso; IF cod is null then set cod = 'C' + right('0000000' + convert(varchar(7),1),7); else set cod = 'C' + right('0000000' + convert(varchar(7), @id +1),7) return cod; END$$ DELIMITER ; 之后的set cod中收到此错误:

  

“鳕鱼”在此位置无效,需要一个标识符

我在做什么错了?

1 个答案:

答案 0 :(得分:3)

您的功能有很多问题。

  • +图标在MySQL中不执行串联,它用于求和。使用CONCATCONCAT_WS
  • 不当使用CONVERT。请参阅文档CONVERT
  • 使用LPAD0填充到整数值的左侧,并将其长度设为7
  • 已删除@a,不知道从何处访问它,将其替换为cod值并为其添加1。
  • 缺少END IF子句。
DELIMITER $$
CREATE FUNCTION gg () RETURNS CHAR(8) DETERMINISTIC 
BEGIN 
    DECLARE cod VARCHAR(8);
    SELECT
        RIGHT(MAX(idCurso),7) INTO cod
    FROM Curso; 

    IF cod IS NULL THEN 
        SET cod = CONCAT('C', LPAD(1, 7, '0')); 
    ELSE 
        SET cod = CONCAT('C', LPAD(cod + 1, 7, '0')); 
    END IF; 
    RETURN cod; 
END$$
DELIMITER ;