Помогите с SP и UDF? - PullRequest
       2

Помогите с SP и UDF?

3 голосов
/ 04 мая 2011

Я пытаюсь изучить и использовать SP (хранимая процедура) и UDF (пользовательская функция) с MySQL и PHP.В чем разница между SP и UDF и какова цель?

Как будет выглядеть простой фрагмент кода в PHP и SQL с SP, который обновляет, записывает или выбирает что-то из таблицы в базе данных MySQL?Нужно понимать и видеть смысл использования SP и UDF.

Точная помощь!Спасибо!

1 Ответ

4 голосов
/ 04 мая 2011

хранимые процедуры

Хранимая процедура - это код 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' ";

Удачи.

...