Не удалось объявить переменную в mysql - PullRequest
1 голос
/ 03 мая 2020

Это ошибка, полученная при попытке выполнить запрос, показанный ниже:

Код ошибки: 1064. У вас ошибка в синтаксисе SQL; обратитесь к руководству, соответствующему вашей MySQL версии сервера, чтобы узнать правильный синтаксис для использования рядом с 'DECLARE productCount INT DEFAULT 0' в строке 1

Я использую Mysql верстак в Ubuntu

  • MySQL Workbench Community (GPL) для Linux / Unix версия 6.3.8 CE build 1228 (64 бит)
  • Cairo Версия: 1.15.10
  • ОС : Linux 5.3.0-47-generi c
  • Процессор: 4x Процессор Intel® Core® TM i5-7200U @ 2,50 ГГц (500,028 МГц) - 15,53 ГБ ОЗУ
  • Распространение: Ubuntu 18.04.4 LTS
  • Включен режим Fips: нет

enter image description here

Ответы [ 3 ]

1 голос
/ 03 мая 2020

DECLARE можно использовать только в триггерах, функциях и хранимых процедурах между BEGIN и END, см. mysql maual

Если вы хотите использовать переменную, объявите пользовательскую переменную, например @ msg

use testdb;
SET @msg := 'testme if you can';
SET @testcount := 0;

SELECT @msg,@testcount + 1;

Результат:

# @msg, @testcount + 1
testme if you can, 1
1 голос
/ 03 мая 2020

Вы можете использовать DECLARE только в хранимых процедурах. Вот простой пример передачи двух переменных в хранимую процедуру и объявления одной переменной внутри хранимой процедуры

CREATE DEFINER=`myslq_user`@`%` PROCEDURE `createRecord`(IN _name NVARCHAR(255), IN _userID int)
BEGIN
    DECLARE val INT DEFAULT 0;
        INSERT INTO tbldata (Name, UserID, Value) VALUES (_name, _userID, val);
    END IF;
END
1 голос
/ 03 мая 2020

Вы можете объявлять переменные только внутри подпрограмм.

...