Пользовательсяка SQL функция

nezabor
На сайте с 19.07.2010
Offline
152
373

Первый раз решил сделать пользовательскую функцию и тут такой облом(

DELIMITER //


CREATE FUNCTION mailInsert (fio VARCHAR)
RETURNS VARCHAR(10)

BEGIN

DECLARE est VARCHAR(10);

SELECT id INTO est FROM A_mails_list LIMIT 1;

RETURN est ;

END//

DELIMITER ;

ошибка

[SQL]


CREATE FUNCTION mailInsert (fio VARCHAR)
RETURNS VARCHAR(10)

BEGIN

DECLARE est VARCHAR(10);

SELECT id INTO est FROM A_mails_list LIMIT 1;

RETURN est ;

END;
[Err] 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 ')
RETURNS VARCHAR(10)

BEGIN

DECLARE est VARCHAR(10);

SELECT id INT' at line 1

Чудес не бывает...
S
На сайте с 25.11.2008
Offline
124
#1

Попробуйте так при объявлении параметров

CREATE FUNCTION mailInsert (fio VARCHAR(64))

Бесплатные виджеты для сайта (https://pfka.ru). Технический анализ сайта ( https://linkonavt.ru/services/sitetechnologies ).
nezabor
На сайте с 19.07.2010
Offline
152
#2

затребовал какой-то факишный Deterministic, я добавил но что это пока не разобрался

S
На сайте с 25.11.2008
Offline
124
#3
nezabor:
затребовал какой-то факишный Deterministic, я добавил но что это пока не разобрался

Ну общий синтаксис примерно такой будет


CREATE DEFINER = 'root'@'%'
FUNCTION qqq(aaa integer, bbb varchar(10))
RETURNS integer
DETERMINISTIC
BEGIN
DECLARE xxx integer;
SET xxx = (SELECT COUNT(*) FROM table WHERE id=aaa AND name=bbb)
RETURN xxx;
END

Если не укажете DETERMINISTIC, то по дефолту должно быть принято как NOT DETERMINISTIC

nezabor
На сайте с 19.07.2010
Offline
152
#4

sslab, да уж разобрался

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий