MySQL. Библиотека профессионала - Аткинсон Л
..pdf552 Глава Расширение возможностей MySQL
Поле |
|
Описание |
|
|
my_bool |
|
Указывает на |
может ли функция возвращать пус |
|
|
|
тое значение. Если один из аргументов функции |
||
|
|
жет быть пустым, в это поле будет записана единица |
||
unsigned |
decimals |
Содержит количество цифр после запятой, если |
||
|
|
функция возвращает числовое значение. Будет ука |
||
|
|
зана максимальная точность среди всех аргументов |
||
unsigned |
int |
Определяет |
максимальную длину |
возвращаемой |
|
|
строки |
|
|
char *ptr |
С помощью этого указателя осуществляется обмен |
|||
|
|
данными между инициализирующей |
и |
|
|
|
другими двумя функциями. Например, |
||
|
|
лить блок памяти и записать сюда адрес этого блока |
Если функция возвращает пустое значение, аргумент is_null должен быть равен 1. В случае ошибки в аргумент error записывается значение 1. В результате текущая за пись и все последующие станутпустыми.
Описание структуры UDF_ARGS приведено в табл. 31.5. Через эту структуру про грамма MySQL передает аргументы функции.
Поле |
Описание |
unsigned int arg_count |
Содержит число аргументов функции. Если это |
|
значение фиксировано, проверьте его в ини |
|
циализирующей функции |
Item_result *arg_type |
Содержит массив типов аргументов. Возможные |
|
значения массива таковы: INT_RESULT, REAL_ |
|
RESULT и STRING_RESULT. Можно осуществ |
|
лять проверку типов и в случае несовпадения |
|
либо возвращать признак ошибки, либо коррек |
|
тировать содержимое массива, приводя аргу |
|
менты к нужному типу |
char **args |
Содержит массив значений аргументов. Если |
|
гумент является строкой, в массиве будет хра |
|
ниться указатель на строку. Длины строковых |
|
гументов приведены в массиве lengths. Если ар |
|
представляет собой целое число или |
|
число с плавающей запятой, приведите значение |
|
типу long long или double соответственно |
Создание процедур 553
Поле |
Описание |
unsigned long *lengths |
Содержит массив длин аргументов. В инициали |
|
зирующей функции эти значения устанавлива |
|
ются по максимуму на основании определений |
|
столбцов. В основной функции длины строко |
|
вых аргументов являются точными |
Инициализирующая функция возвращает ненулевое значение в случае ошибки. Если обнаружена ошибка, скопируйте текст поясняющего значения в аргумент message. Максимальная длина сообщения хранится в переменной но нужно стараться, чтобы длина сообщения не превышала 80 символов. Тогда оно сможет быть отображено на любом стандартном терминале.
Если вы хотите поделиться с другими пользователями своими функциями, зареги
стрируйте их на узле |
Я, к примеру, |
нашел там очень интересную |
осуществляющую вызов методов |
Создание процедур
Процедуры MySQL выполняют операции над результатами запросов. Процедура ак тивизируется при наличии в конце инструкции SELECT ключевого слова PROCEDURE. В настоящий момент в MySQL входит единственная процедура analyse описанная в главе 12, "Встроенные функции". Разрешается создавать собственные процедуры, включая их в наэтапе компиляции.
Процедуры появились в MySQL версии 3.21, но пока что не вызвали особого энтузиаз ма. Писать их оказалось слишком сложно для большинства пользователей. Например, для создания процедуры на C++ требуется определить класс, производный от класса Procedure. Код последнего находится в файлах и Процедураanalyse реализованавфайле
С другой можно воспользоваться библиотекой (www.fastflow.it/ которая позволяет динамически загружать процедуры, написанные на языке Для запуска сценария LUA в MySQL нужно вызвать функцию
LUA указав ей имя исходного файла, где содержится определение процедуры.
РЕСУРСЫ В INTERNET
Вэтом приложении.
•Официальные списки рассылки
•Архивы списков рассылки
•Web узлы
•Отчеты об ошибках
Web узлы 557
Yahoo
Web узлы
Ниже приведен перечень Web узлов, которые могут заинтересовать пользователей MySQL.
MySQL
www.mysql.com
Это официальный Web узел компании MySQL Отсюда можно начинать поиск информации.
www.
Здесь публикуются статьи, посвященные различным Web технологиям.
lib.
Это реестр
html
Здесь обсуждаются различные аспекты MySQL, которые традиционно вызывали недоверие у пользователей других СУБД.
Реляционные базы данных
www.palslib.com
Здесь содержится перечень информационных ресурсов, посвященных реляцион ным СУБД.
www. com
Здесь публикуются различные критические статьи о базах данных.
www. com
Здесь рассматриваются вопросы объектно реляционной модели.
www. com
Это Web узел Скотта где содержится много интересных документов, ка сающихся реляционных базданных.
558 Приложение А. Ресурсы в Internet
htm
Эта Web страница посвящена стандартам языка SQL.
www.sql.org
Здесь можно найти официальную информацию о языке SQL.
Отчеты ошибках
Разработчики MySQL ведутспециальный список рассылки (bugs@l ists com), в котором публикуются отчеты об ошибках программы. Можно самостоятельно посылать туда свои сообщения, но лучше пользоваться сценарием который способен томатически генерировать информацию о системе. Чем точнее будут сведения о конфи гурации, тем проще будет разработчикам разобраться в проблеме.
Прежде чем сообщать об ошибке, проверьте интерактивную документацию. Неко торые проблемы уже известны и описаны, особенно те, которые касаются особенно стей конкретных операционных систем. На Web узлах можно также встретить ком ментарии пользователей.
Далее обратитесь в архивы списков рассылки. Не исключено, что с подобной блемой уже сталкивался . Ответы на жалобы пользователей быстро публикуют ся в списках.
В разделе 1.6.2.3 интерактивной документации описано, какую информацию необ ходимо включить в отчет об ошибке.
ПРАВОВЫЕ
АСПЕКТЫ
В этом
Лицензирование программы MySQL Общая лицензия GNU
Стабильность
вэтом приложении рассматриваются вопросы, касающиеся коммерческого ис пользования программы MySQL.
ЛицензированиепрограммыMySQL
Текущие версии MySQL доступны на условиях общей лицензии GNU (GNU Gen eral Public License), которая широко популярна при распространении программ с открытыми исходными кодами. Любой пользователь может свободно использовать и модифицировать программу без каких либо ограничений, при условии, что програм ма не передается другим пользователям. В случае распространения программы может потребоваться придерживаться определенных ограничений. Как правило, если грамма модифицируется, то наряду с откомпилированной версией необходимо рас пространять также ее исходные коды. Этого можно избежать, если приобрести у компании MySQL коммерческую лицензию. Информация о процедуре получения лицензии доступна на компании. Следует отметить, что стоимость ческой лицензии невысока в сравнении с другими СУБД.
Ниже приведен текст общей лицензии GNU. Дополнительную информацию о ней можно найти на
ОбщаялицензияGNU
Версия июнь 1991 года
Copyright © Free Software Foundation, Inc. 675 Mass Cambridge, MA USA
Разрешается копирование и распространение копий этого документа, но запреща ется внесение каких бы то ни было изменений в его текст.