在mysql中创建过程时出现语法错误

时间:2018-06-12 10:02:32

标签: mysql mysql-workbench

我有这个问题。

Job

在mysql workbench上执行它时会显示一个语法错误,表示"意外选择"在A行。

但是,由于查询是正确的,当我执行它时,它确实执行并返回正确的结果。

当我尝试创建一个包含完全相同的东西的过程时,它无法编译。源代码是这样的:

Job[]

显示的消息是"对象的DDL语句包含语法错误。" 这是我在做错的事情,还是mysql workbench的错误?

2 个答案:

答案 0 :(得分:1)

由于同时修复了MySQL语法错误*,因此出现此错误。请尝试使用最新的Workbench版本(目前是WB 8.0.11 RC,请参阅下载页面上的“开发版本”)。这应该适合你。

(*)MySQL Workbench使用ANTLR4来解析SQL代码。这需要MySQL语法来生成解析器。

答案 1 :(得分:0)

您的查询在语法上是正确的。它可能是一个工作台的错误。进入存储过程,您应该能够使用该查询创建它。尝试使用以下查询创建SP。就我而言,我可以使用它创建SP。复制此查询在工作台中打开一个新的查询编辑器并将其粘贴到那里,选择全部并按Ctrl + Shift + Enter

USE `YOUR_DB`;
DROP procedure IF EXISTS `proc_sample`;

DELIMITER $$
USE `YOUR_DB`$$
CREATE DEFINER=`admin`@`%` PROCEDURE `proc_sample`()
BEGIN
    SELECT distinct c.reportingDate, c.clientId
    FROM clients AS c
    WHERE NOT EXISTS 
          ( SELECT 1
            FROM accounts_europe AS e
            WHERE e.reportingDate = c.reportingDate
              AND e.clientId = c.clientId

            union

            SELECT 1
            FROM accounts_usa AS u
            WHERE u.reportingDate = c.reportingDate
              AND u.clientId = c.clientId
          ) ;
END$$

DELIMITER ;