Написал вот такую процедуру: Код (Text): CREATE PROCEDURE check_branch(INOUT CheckId INT) BEGIN DECLARE save_id INT DEFAULT 0; SELECT id INTO save_id FROM tree WHERE parent = CheckId; IF save_id = 0 THEN SET @result = 0; END IF; END Ошибка: Код (Text): #1064 - 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 '' at line 3 Делаю по примерам из статей. Подскажите, что не верно
Разобрался. Проблемы было две. Процедуру я создавал не через консоль, а через phpMyAdmin. При создании процедуры (в phpMyAdmin во вкладке SQL), в поле Delimiter (разделитель) нужно поставить знаки $$. Последнее недаразумение, в таблице у меня лежало несколько записей, а INTO должен возвращать не больше одной строки. А так как, этой процедурой мне нужно было узнать существование у ветки потомков, просто подставил COUNT. В итоге процедура получилась следующая: Код (Text): CREATE PROCEDURE `check_branch` (CheckId INT) BEGIN DECLARE save_id INTEGER DEFAULT 0; SELECT COUNT(`id`) INTO save_id FROM `tree` WHERE `parent` = CheckId; IF save_id = 0 THEN SET @result = 0; ELSE SET @result = save_id; END IF; END Запускается так: Код (Text): CALL check_branch(1); select @result