【问题标题】:mySQL stored procedure errormySQL 存储过程错误
【发布时间】:2016-07-16 18:19:08
【问题描述】:

我尝试在存储的 mySQL 过程中使用 if 语句,但是当我尝试在 mySQL 工作台中创建它时,我收到此错误 ERROR 1064: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'database'.'table' WHERE date=dateIn;

代码如下:

DELIMITER $$

CREATE DEFINER=`rates_d_db` PROCEDURE `byDate`(in dateIn VARCHAR(255),in action VARCHAR(255))
BEGIN

IF action = "edit" THEN EDIT `database`.`table` WHERE date=dateIn;

ELSE SELECT * FROM `database`.`table` WHERE date=dateIn;

END IF;

END$$

我是存储过程的新手,所以这可能是一个非常菜鸟的错误。

提前谢谢!

【问题讨论】:

  • 你想在编辑中使用什么,这是错误的(编辑database.tableWHERE date=dateIn;)。您要在此处更新还是更改语句。

标签: mysql mysql-workbench


【解决方案1】:

date 是 mySQL 中的 reserved word。您还必须将其包装在反引号中。

【讨论】:

  • 也许我做错了,但这就是我所做的,但仍然没有运气...'table'.'column',其中的 ' 是反引号。
  • 你用反引号把date 包裹在WHERE date=dateIn 中?
  • 我做到了,就像这样'date'=dateIn
  • @user 你需要使用反引号`
  • 我做了,如上所述,如果我在评论部分使用反引号,它会突出显示文本,所以我不能在这里使用它,但我正在使用这些 -> `跨度>
【解决方案2】:

这是您的程序的正确版本

DELIMITER $$

CREATE DEFINER=`rates_d_db` PROCEDURE `byDatee`(in dateIn VARCHAR(255),in action VARCHAR(255))
       BEGIN
           IF action = "edit" THEN 
                -- I used select below as i don't know what you want in edit either alter table or update table
               SELECT * FROM `database`.`table` WHERE date=dateIn;    
           ELSE
                SELECT * FROM `database`.`table` WHERE date=dateIn;
           END IF;
END $$

【讨论】:

    猜你喜欢
    • 2016-02-08
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    相关资源
    最近更新 更多