Хранимая процедура - оператор выбора в одну строку Синтаксис ERROR - PullRequest
0 голосов
/ 31 марта 2020

Оператор выбора одной строки выдает синтаксическую ошибку в SP, но запрос, если он выполнен, не выдает никакой ошибки.

Ошибка изменяется на syntax error near -, если я удаляю IN _HOSTID входной параметр и DECLARE заявления. Это очень странно, и я не могу найти причину ошибки.

DELIMITER //

CREATE PROCEDURE getTotalCCU(IN _HOSTID INTEGER)
BEGIN
DECLARE HOSTID INT;
DECLARE TOTAL_ITEM INT;

SELECT  item_count  FROM items WHERE hostid = '12345' and key_ LIKE '%_net%' AND NOT key_  LIKE '%Total_%' AND NOT key_ LIKE '%{#%' AND STATUS = '0';

END //

DELIMITER ;

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

mysql -uroot -p DB01 < getTotalNET.sql

ERROR 1064 (42000) at line 3: 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 '-



END' at line 12

1 Ответ

0 голосов
/ 02 апреля 2020

Выяснил проблему.

Переменная не должна совпадать с любым столбцом в запросе.

DECLARE HOSTID INT;

SELECT  item_count  FROM items WHERE hostid = '12345' and key_ LIKE '%_net%' AND NOT key_  LIKE '%Total_%' AND NOT key_ LIKE '%{#%' AND STATUS = '0';

Поскольку запрос имеет столбец с именем hostid, мы получаем синтаксис ошибка.

Решение переименуйте переменную HOSTID в _HOSTID.

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