Могу ли я написать свои собственные функции MySQL для использования в запросах MySQL? - PullRequest
5 голосов
/ 03 апреля 2009

Могу ли я написать пользовательскую функцию, которую я могу вызывать при выполнении запросов MySQL, например.

Моя таблица базы данных имеет поля 'filetype' и 'filename'. Я хочу выполнить функцию с именем файла перед возвратом результата.

$query = "SELECT filetype, MY_FUNCTION(filename) FROM table..";
$result = mysql_query($query);
return $result

SO $ result теперь имеет новые значения, созданные MY_FUNCTION. Исходные данные базы данных останутся без изменений.

ОК - похоже, пользовательские функции - это путь ... как мне написать собственную пользовательскую функцию? Могу ли я использовать PHP, чтобы написать это? Где я могу сохранить функцию или включить ее в файл globals?

Спасибо!

Ответы [ 5 ]

12 голосов
/ 03 апреля 2009
DELIMITER $$

CREATE FUNCTION MY_FUNCTION (FILENAME VARCHAR(255)) RETURNS VARCHAR(255)
DETERMINISTIC
NO SQL
BEGIN
       RETURN SUBSTR(filename, 1, 20);
END
$$


DELIMITER ;

Чтобы создать функцию, вы просто вставляете ее код (от Sililar до указанного выше) в ваш любимый инструмент запросов, например mysql.exe, MySQL Query Browser, phpmysqladmin и т. Д.

Вы можете написать UDF как в C, так и в SQL. В последнем случае вам не нужен компилятор.

В качестве примера я привел функцию SQL UDF. Он просто возвращает первые 20 символов имени файла.

Вы можете использовать любые функции MySQL в SQL UDF.

7 голосов
/ 03 апреля 2009

Да, это называется Пользовательские функции (UDF) .

А вот хороший репозиторий уже готовых функций, так что вы можете проверить, соответствует ли что-то вашим потребностям.

0 голосов
/ 03 апреля 2009

Вы не можете написать пользовательскую функцию в PHP (или, по крайней мере, не написав обертку, которая будет вызывать ваш скрипт), так как пользовательские функции загружаются как собственный код.

0 голосов
/ 03 апреля 2009
0 голосов
/ 03 апреля 2009

Если я вас правильно понял, вы хотите создать хранимую процедуру? http://dev.mysql.com/tech-resources/articles/mysql-storedprocedures.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...