【问题标题】:"MySQL syntax error" while creating a function [closed]创建函数时出现“MySQL语法错误”[关闭]
【发布时间】:2023-03-09 06:16:01
【问题描述】:

"#1064 - 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“CREATE FUNCTION TavoliLiberi (dataora DATETIME) RETURN BOOL BEGIN DECLARE prese”附近使用正确的语法" 在这个函数中:

DELIMITER $

DROP FUNCTION IF EXISTS TavoliLiberi;

CREATE FUNCTION TavoliLiberi (dataora DATETIME) RETURN BOOL
BEGIN
DECLARE presenti BOOL;
DECLARE numPrenotazioni INT;
DECLARE numTavoli INT;

SELECT COUNT(*) INTO numPrenotazioni
FROM Prenotazioni
WHERE DataOra = dataora;

SELECT COUNT(*) INTO numTavoli
FROM Tavoli;

IF (numPrenotazioni < numTavoli) THEN
    SET presenti = TRUE;
ELSE
    SET presenti = FALSE;
END IF;

RETURN presenti;
END $

DELIMITER ;

怎么了?

【问题讨论】:

    标签: mysql function syntax


    【解决方案1】:

    你的分隔符更改试试这个

    DELIMITER $
    
    DROP FUNCTION IF EXISTS TavoliLiberi$
    

    其余部分保持不变

    【讨论】:

      【解决方案2】:

      您的分隔符首选项设置在错误的位置。请尝试以下操作:

      DROP FUNCTION IF EXISTS TavoliLiberi;
      
      DELIMITER $
      
      CREATE FUNCTION TavoliLiberi (dataora DATETIME) RETURN BOOL
      ....
      ....
      

      【讨论】:

      • 在函数声明中是 RETURNS not RETURN "CREATE FUNCTION TavoliLiberi (dataora DATETIME) RETURNS BOOL"。
      • [已解决] 问题是 Luis G. Costantini R. 建议我使用“RETURN”而不是“RETURNS”,但只能从终端上传而不是使用 phpMyAdmin 导入,它已被正确处理.
      猜你喜欢
      • 2020-01-12
      • 2012-10-22
      • 1970-01-01
      • 2019-10-22
      • 1970-01-01
      • 1970-01-01
      • 2018-06-14
      • 2014-04-29
      • 2013-11-13
      相关资源
      最近更新 更多