MySQL, как выполнить командный блок без процедуры / функции - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь запустить блок команд SQL на MySQL Workbench, как я делаю на SQL Server, но он говорит мне: объявление не действует в этой позиции.

Я видел различные примеры этого в сети, и я действительно не понимаю, почему эта ошибка.

Какой совет?

Коды, где пример 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 голосов
/ 07 ноября 2018

К сожалению, это не поддерживается в MySQL. Вы можете использовать DECLARE только в составных операторах (то есть в BEGINE .. END блоках). Поэтому такие операторы можно размещать только в хранимых процедурах, триггерах, событиях и функциях.

Согласно документам ,

В этом разделе описывается синтаксис соединения BEGIN ... END. заявление и другие утверждения, которые могут быть использованы в теле хранимых программы: хранимые процедуры и функции, триггеры и события. Эти объекты определяются в терминах кода SQL, который хранится на сервере для последующего вызова (см. главу 20 «Сохраненные программы и представления»).

Составной оператор - это блок, который может содержать другие блоки; объявления для переменных, обработчиков условий и курсоров; и поток управляющие конструкции, такие как циклы и условные тесты.

Также

DECLARE разрешено только внутри составного оператора BEGIN ... END и должен быть в начале, перед любыми другими заявлениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...