хранимые процедуры
Хранимая процедура - это код MySQL, написанный и выполняемый MySQL.
Пример сохраненной функции
CREATE FUNCTION AreWeThereYet(Location integer) RETURNS boolean
BEGIN
Return 0;
END
Пример хранимой процедуры
CREATE PROCEDURE InsertRow(A integer)
BEGIN
INSERT INTO table1 VALUES(A);
END
ОДС
UDF - это C (++) или аналогичный код, скомпилированный как .so (linux) или .dll (windows)
Который вы вставляете в MySQL с помощью такой команды:
CREATE FUNCTION metaphon RETURNS STRING SONAME 'udf_example.so'; //linux
CREATE FUNCTION metaphon RETURNS STRING SONAME 'udf_example.dll'; //windows
Recap
UDF сложны, хранимые процедуры просты.
Вы можете найти множество примеров хранимых процедур в SO
Поскольку UDF более сложны, я буду использовать их только в том случае, если вы обнаружите, что хранимая функция / хранимая процедура больше не работает для вас (для замедления / недостаточной мощности и т. Д.)
Ссылки
Для получения дополнительной информации о хранимых процедурах см .:
http://dev.mysql.com/doc/refman/5.1/en/stored-routines.html
Для получения дополнительной информации о UDF см .:
http://dev.mysql.com/doc/refman/5.1/en/udf-compiling.html
Хорошие вопросы SO по хранимым процедурам
отладка: Как отлаживать хранимые процедуры MySQL?
использовать их с php ?: Должны ли разработчики PHP использовать хранимые процедуры MySQL?
views или sproc ?: MySQL: представления и хранимые процедуры
использование sproc для обновления: процедура mysql для обновления числовой ссылки в предыдущих строках при обновлении
Вызов и обработка ошибок в sproc: Как вызвать ошибку в функции MySQL
Как вызвать хранимую процедуру из php
Это действительно просто еще один запрос
-- normal select
$query = "SELECT * FROM table1";
-- call to stored proc
$query = "CALL InsertARow('1')";
-- use a stored function
$query = "SELECT AreWeThereYet('10')";
-- or
$query = "SELECT * FROM table1 WHERE AreWeThereYet(field1) = '1' ";
Удачи.