Я пытаюсь изучить и использовать SP (хранимую процедуру) и UDF (пользовательская функция) с MySQL и PHP. В чем разница между SP и UDF и какова цель?
Как простой фрагмент кода выглядит в PHP и SQL с помощью SP, который обновляет, пишет или извлекает что-то из таблицы в базе данных MySQL? Необходимо понять и понять смысл использования SP и UDF.
Предоставьте помощь! Благодаря!
Хранимая процедура – это код 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
резюмировать
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
Хорошие вопросы о хранимых процедурах
Отладка : как вы отлаживаете хранимые процедуры MySQL?
использовать их с php ?: Должны ли разработчики PHP использовать хранимые процедуры MySQL?
просмотров или sproc: MySQL: Views vs Stored Procedures
использование sproc для обновления: процедура mysql для обновления числовой ссылки в предыдущих строках при обновлении
повышение и обработка erros в 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' ";
Удачи.