Хранимые процедуры в MySQL

Создано Евгений Злобин в августа 26, 2010

Раньше мне как-то не приходилось работать с процедурами в MySQL. Решил заполнить этот пробел хоть каким-то практическим опытом. Хранимые процедуры появились в MySQL начиная с пятой версии. У меня дома как раз установлена версия 5.1.

Хранимые процедуры представляют собой набор команд SQL, которые могут компилироваться и храниться на сервере. Таким образом, вместо того, чтобы хранить часто используемый запрос, клиенты могут ссылаться на соответствующую хранимую процедуру. Это обеспечивает лучшую производительность, поскольку данный запрос должен анализироваться только однажды и уменьшается трафик между сервером и клиентом. Концептуальный уровень можно также повысить за счет создания на сервере библиотеки функций.

Для примера приведу написанный мной код процедуры, которая заполняет таблицу

· id: INT (AI)
· name: VARCHAR («тест»)
· desc: LONGTEXT («текст»)
· uid: INT (рандом)

случайными значениями:

DELIMITER $$
DROP PROCEDURE IF EXISTS `p1`$$
CREATE PROCEDURE `p1`()
BEGIN
	DECLARE id INT;
	DECLARE my_name VARCHAR(255);
	DECLARE description LONGTEXT;
	DECLARE uid INT;
	SET id = 1;
	WHILE id < 5 DO
		SET my_name = CONCAT_WS(' ', MD5( RAND() ), id);
		SET description = CONCAT_WS(' ', 'is desc', my_name);
		SET uid = FLOOR( 1 + RAND() * ( 250000 - 1 ));
		INSERT INTO my_table VALUES (id,my_name,description,uid);
		SET id = id + 1;
	END WHILE;
END$$
DELIMITER ;

Основная проблема с которой я столкнулся при написании – это то, что при добавлении вываливалась ошибка. Однако это всё было решено выставлением разделителя:

DELIMITER $$

Вот в этой статьей очень подробно описано что такое хранимые процедуры и с чем их есть.

Может быть Вам это интересно?

22 отв. в “Хранимые процедуры в MySQL”

  1. Роман Матвейчук

    Теперь хоть не много понятно что такое процедуры в MySQL оО

  2. Понятно???? та тут так все запутано, что без 100 грам не розобраться! ))

  3. Да лан мне вот до сих пор ничего не понятно, хотя бьюсь с этим делом уже пару месяцев=)

  4. А чего непонятного-то? Это наподобие шейдера в видеокарте – заранее заготовленный алгоритм обработки данных определенного типа.

  5. Отлично написаною Автору респект и уважуха. Спасибо – действительно полезная информация.

  6. Честно говоря боюсь лезть в эту кучу. По простой причине.

  7. Блин вродь и доступно написано, но как новечку непонятно:(

  8. Хранимые процедуры это гуд, особенно на более продвинутых субд, вроде PosgreSQL в купе с триггерами.

  9. mysql-продукт openSource, поэтому
    Приятно, что можно использовать Хранимые процедуры(набор команд выполняющихся в самой базе).
    Из приложения можно вызывать Хранимую процедуру ,
    процесс происходит быстрее, не надо поддерживать connect с базой на каждую команду.

  10. Ох, в большинстве случаев их не дают использовать хостеры. Даже вьюшки =(. Так что сначала надо хорошо почитать, какие возможности предоставляет ваш хостинг!

  11. Вы хотите сказать, что не дают привилегии на объекты базы данных? Тогда смысл в базе?

  12. Выбираете нормального хостера и пользуетесь вовсю

  13. Информация написано на русском языке, но так сложно для понимания, нету опыта работы в подобном направлении, так возможно все было бы и полегче.

  14. Корпоративный блог Сайт Имидж

    По-моему написано лучше чем в учебнике. Хотя возможно для новичков елементы кода будут непонятны.

  15. Алексей Н.

    Написано однозначно красиво, но в действительности, я сам вряд ли полезу, ну не для меня это. Залез как-то, наломал дров, пришлось друзей звать на помощь, в итоге пришлось движок на сервер пере закачивать:)) Вроде всё работает, ну и слава богу, а от добра – добра не ищут.

  16. redox sparrow-hawk

    метод популярный в последние годы – 50 граммов хватит))

  17. Кстати, откуда писали? Ну, учебник или что? Доки?

  18. Евгений Злобин

    okoloblog, да инфа собиралась со всех мест – где мог найти ) а потом написал то, что нужно было мне.

  19. честно говоря мне тоже не совсем всё понятно:( но я на это время не собираюсь тратить я не думаю что это так важно знать, год создаю и продвигаю сайты ни разу с этим вопросом не сталкивался, значит это и не так важно:)

  20. seomen, для сайтов для Вордпрессе или Жумле, возможно, и не важно. Да и год, как говорится, не срок.

  21. Неплохая статья. Довольно локанично все рассказываете. Стоит взять на заметку.

  22. Хранимки очень удобно использовать с триггерами. У меня система обсчета статистики вся сделана именно на них: по записи в базу срабатывает триггер, вызывает хранимую процедуру, в коей заполняются все расчетные поля. В итоге просто заносишь данные в базу – а они сами раскладываются куда нужно. Ляпота :)

Оставить ответ