Создание хранимой функции MySQL
От: Antrekot  
Дата: 01.04.10 07:37
Оценка:
Создаю хранимую функцию в 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 или то что он возвращает.

В чем может быть ошибка?
Re: Создание хранимой функции MySQL
От: Anton Batenev Россия https://github.com/abbat
Дата: 01.04.10 16:39
Оценка:
Здравствуйте, Antrekot, Вы писали:

A> И подозреваю что ругается на оператор RETURN или то что он возвращает.

...
A> В чем может быть ошибка?

Функция может возвращать только типы MySQL.
avalon 1.0rc3 rev 318, zlib 1.2.3
Re: Создание хранимой функции MySQL
От: Konstantin  
Дата: 03.04.10 17:52
Оценка:
Здравствуйте, Antrekot, Вы писали:

A>Создаю хранимую функцию в MYSQL по аналогу как написано здесь
Автор(ы): Михаил Голованов
Дата: 28.01.2002
.

A>Изменил только PROCEDURE на FUNCTION, т.к. вычитал что в PROCEDURE RETURN не ставится.
[skip]
A>В чем может быть ошибка?

Мне помог апгрейд phpMyAdmin. Потому что старая версия это не поддерживала и выдавала ошибку.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.