Создаю хранимую функцию в MYSQL по аналогу как написано
здесьАвтор(ы): Михаил Голованов
Дата: 28.01.2002
.
Изменил только PROCEDURE на FUNCTION, т.к. вычитал что в PROCEDURE RETURN не ставится.
Пробовал так:
CREATE FUNCTION GET_PARENTS (id_catalog INTEGER)
RETURNS (E_ID INTEGER, NAME CHAR(200))
AS
declare variable P_ID integer;
BEGIN
select cat_subordination from tbl_catalog where id_catalog = :id_catalog into :id_catalog;
WHILE (id_catalog > 0) DO
BEGIN
SELECT C.id_catalog, C.cat_subordination, C.NAME
FROM tbl_catalog C
WHERE id_catalog = :id_catalog
INTO :E_ID, :P_ID,:NAME;
id_catalog=P_ID;
SUSPEND;
END
END
и так
DELIMITER $$
CREATE FUNCTION GET_PARENTS (id_catalog INTEGER)
RETURNS(E_ID INTEGER, NAME CHAR(200)) AS declare variable P_ID integer;
BEGIN
select cat_subordination from tbl_catalog where id_catalog = :id_catalog into :id_catalog;
WHILE (id_catalog > 0) DO
BEGIN
SELECT C.id_catalog, C.cat_subordination, C.NAME
FROM tbl_catalog C
WHERE id_catalog = :id_catalog
INTO :E_ID, :P_ID,:NAME;
id_catalog=P_ID;
SUSPEND;
END
END $$
DELIMITER ;
Всегда ругается:
Script 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 '(E_ID INTEGER, NAME CHAR(200)) AS declare variable P_ID integer; BEGIN selec' at line 2
И подозреваю что ругается на оператор RETURN или то что он возвращает.
В чем может быть ошибка?