MySQL如何在没有过程/功能的情况下执行命令块

时间:2018-11-07 14:32:33

标签: mysql sql

我试图像在SQL Server上一样在MySQL Workbench上运行一个SQL命令块,但是这是在说:声明在此位置无效。

我在网上看到了许多这样的示例,但我确实不理解为什么会出现此错误。

一些提示?

代码,其中SQL Server示例可以正常运行(完美运行):

MySQL                 | SQL Server
--------------------- | ------------------------
DECLARE A INT;        | DECLARE @A INT;        
DECLARE B INT;        | DECLARE @B INT;        
DECLARE RESULT INT;   | DECLARE @RESULT INT;        
                      |         
BEGIN                 | BEGIN        
  SET A = 1;          |   SET @A = 1;        
  SET B = 2;          |   SET @B = 2;        
  SET RESULT = A + B; |   SET @RESULT = @A + @B;        
END;                  | END;        

1 个答案:

答案 0 :(得分:1)

不幸的是,MySQL不支持此功能。 您只能在复合语句(即DECLARE块内)中使用BEGINE .. END。因此,只能将此类语句放入存储过程,触发器,事件和函数中。

根据docs

  

本节描述BEGIN ... END复合物的语法   语句和其他可以在存储体内使用的语句   程序:存储的过程和功能,触发器和事件。这些   对象是根据存储在服务器上的SQL代码定义的   供以后调用(请参阅第20章,存储的程序和视图)。

     

复合语句是可以包含其他块的块;   变量,条件处理程序和游标的声明;和流动   控制构造,例如循环和条件测试。

Also

  

DECLARE仅在BEGIN ... END复合语句内允许   并且必须在其他任何语句开始之前。