【问题标题】:Can not find the Syntax 1064 Error in my stored procedure using MySQL在使用 MySQL 的存储过程中找不到语法 1064 错误
【发布时间】:2022-08-12 04:22:15
【问题描述】:

我正在创建一个存储过程,以便我可以选择我感兴趣的表的字段和第二个参数,即 \"ASC\" 或 \"DESC\",并且该过程将按该字段对表进行排序,并且也将根据第二个参数是什么来订购它 ASC 或 DESC。

但是我找不到语法错误,这是一个常规的 1064 错误!我在 MySQL 工作台中运行它

DELIMITER $$
CREATE PROCEDURE `PROCEDUREUNO` (IN field VARCHAR(100),IN ordenamiento CHAR(5))
BEGIN
IF field <> ‘’ THEN
SET @orden = concat(‘ORDER BY ’, field,ordenamiento);
ELSE
SET @orden = ‘’;
END IF;
SET @clausula = concat(‘SELECT * FROM Contrataciones ’, @orden);
PREPARE runSQL FROM @clausula;
EXECUTE runSQL;
DEALLOCATE PREPARE runSQL;
END

END $$

    标签: mysql stored-procedures


    【解决方案1】:

    您的存储过程声明中有两个错误:

    • 不要使用圆引号‘’,而是使用简单的引号''
    • 在声明的末尾有两个 END 关键字
    DELIMITER $$
    CREATE PROCEDURE `PROCEDUREUNO` (IN field VARCHAR(100),IN ordenamiento CHAR(5))
    BEGIN
        IF field <> '' THEN
            SET @orden = CONCAT('ORDER BY ', field,ordenamiento);
        ELSE
            SET @orden = '';
        END IF;
    
        SET @clausula = CONCAT('SELECT * FROM Contrataciones', @orden);
    
        PREPARE runSQL FROM @clausula;
        EXECUTE runSQL;
        DEALLOCATE PREPARE runSQL;
    END $$
    

    检查演示here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      相关资源
      最近更新 更多