简体   繁体   English

使用 MySQL 在我的存储过程中找不到语法 1064 错误

[英]Can not find the Syntax 1064 Error in my store procedure using MySQL

I am creating a SP so that I can choose the field of a Table im interested in and a second parameter which is "ASC" or "DESC" and de SP will order the table by that field and also will order it ASC or DESC depending on what the second parameter is.我正在创建一个 SP,以便我可以选择我感兴趣的表的字段和第二个参数“ASC”或“DESC”,de SP 将按该字段对表进行排序,也会根据 ASC 或 DESC 对其进行排序关于第二个参数是什么。 But I can not find the syntax mistake which is a regular 1064 mistake!但是我找不到语法错误,这是一个常规的 1064 错误! I am running this in MySQL workbench我在 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 $$

You have two errors in your Stored Procedure declaration:您的存储过程声明中有两个错误:

  • don't use rounded quotes '' , use instead simple quotes ''不要使用圆引号'' ,而是使用简单的引号''
  • you have two END keywords at the end of your declaration您在声明的末尾有两个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 $$

Check the demo here .此处查看演示。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM