Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2011, 17:46   #1
kuzjma
Пользователь Подтвердите свой е-майл
 
Аватар для kuzjma
 
Регистрация: 02.01.2007
Сообщений: 62
По умолчанию Пользовательские функции в MySQL

Добрый день. Столкнулся с проблемой - нужно написать простенькую функцию для MySQL, которая будет искать "пропуски" между ID записей. Сама логика ясна, а вот где почитать про написание функций на MySQL ни как найти не могу. Набросал небольшой "каркас", но при попытки выполнить ругается на ошибки в синтаксисе:
Код:
CREATE FUNCTION get_next_id(table_name VARCHAR(50), table_column VARCHAR(50)) RETURNS INT
BEGIN
	RETURN 0;
END;
kuzjma вне форума Ответить с цитированием
Старый 06.12.2011, 19:33   #2
Cronos20
Форумчанин
 
Регистрация: 08.07.2010
Сообщений: 679
По умолчанию

Так попробуйте ...
Код:
delimiter //
CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column VARCHAR(50)) 
RETURNS INT (1)
BEGIN
	RETURN 0;
END;//
А какие ошибки хоть?
Cronos20 вне форума Ответить с цитированием
Старый 07.12.2011, 11:53   #3
kuzjma
Пользователь Подтвердите свой е-майл
 
Аватар для kuzjma
 
Регистрация: 02.01.2007
Сообщений: 62
По умолчанию

Цитата:
Вероятно, SQL-запрос содержит ошибку. При наличии таковой, ниже будет выведена ошибка MySQL-сервера, облегчающая диагностику проблемы.

ERROR: Неизвестная пунктуация @ 11
STR: //
SQL: delimiter //
CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column VARCHAR(50))
RETURNS INT (1)
BEGIN
RETURN 0;delimiter //
CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column VARCHAR(50))
RETURNS INT (1)
BEGIN
RETURN 0;delimiter //
CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column VARCHAR(50))
RETURNS INT (1)
BEGIN
RETURN 0;delimiter //
CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column VARCHAR(50))
RETURNS INT (1)
BEGIN
RETURN 0;


SQL-запрос:

delimiter // CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column VARCHAR(50)) RETURNS INT (1) BEGIN RETURN 0;

Ответ MySQL: Документация
#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 'delimiter //
CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column' at line 1
Выполнить пробую через phpMyAdmin. Версия MySQL 5.0.51b.
Если выполняю так:
Код:
CREATE FUNCTION `get_next_id`(table_name VARCHAR(50), table_column VARCHAR(50)) 
RETURNS INT (1)
	RETURN 0;
То без проблем. Как только добавляю BEGIN и END начинает ругаться.
kuzjma вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Коллекции и пользовательские типы данных hoza Microsoft Office Excel 19 08.03.2018 14:54
Пользовательские функции в Excel Elfix Microsoft Office Excel 13 28.10.2009 08:25
Пользовательские окна. HWork Общие вопросы C/C++ 0 27.10.2009 11:29
как разорвать ЭТИ связи и удалить пользовательские функции StasSv Microsoft Office Excel 3 25.06.2009 17:41
* Пользовательские процедуры и функции DJ Kost Помощь студентам 2 17.12.2008 16:55