 
        
        MySQL. Библиотека профессионала - Аткинсон Л
..pdf 
552 Глава  Расширение возможностей MySQL
 Расширение возможностей 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 символов. Тогда оно сможет быть отображено на любом стандартном терминале.
 но нужно стараться, чтобы длина сообщения не превышала 80 символов. Тогда оно сможет быть отображено на любом стандартном терминале.
Если вы хотите поделиться с другими пользователями своими функциями, зареги
| стрируйте их на узле | Я, к примеру, | 
| нашел там очень интересную | осуществляющую вызов методов | 
Создание процедур
Процедуры MySQL выполняют операции над результатами запросов. Процедура ак тивизируется при наличии в конце инструкции SELECT ключевого слова PROCEDURE. В настоящий момент в MySQL входит единственная процедура analyse  описанная в главе 12, "Встроенные функции". Разрешается создавать собственные процедуры, включая их в
 описанная в главе 12, "Встроенные функции". Разрешается создавать собственные процедуры, включая их в  наэтапе компиляции.
 наэтапе компиляции.
Процедуры появились в MySQL версии 3.21, но пока что не вызвали особого энтузиаз ма. Писать их оказалось слишком сложно для большинства пользователей. Например, для создания процедуры на C++ требуется определить класс, производный от класса Procedure. Код последнего находится в файлах  и
 и 

 Процедураanalyse
 Процедураanalyse  реализованавфайле
 реализованавфайле 

С другой  можно воспользоваться библиотекой
 можно воспользоваться библиотекой  (www.fastflow.it/
 (www.fastflow.it/  которая позволяет динамически загружать процедуры, написанные на языке
 которая позволяет динамически загружать процедуры, написанные на языке 
 Для запуска сценария LUA в MySQL нужно вызвать функцию
 Для запуска сценария 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
 com
Здесь публикуются различные критические статьи о базах данных.
www.  com
 com
Здесь рассматриваются вопросы объектно реляционной модели.
www.  com
 com
Это Web узел Скотта  где содержится много интересных документов, ка сающихся реляционных базданных.
 где содержится много интересных документов, ка сающихся реляционных базданных.
 
558 Приложение А. Ресурсы в Internet
 htm
htm
Эта Web страница посвящена стандартам языка SQL.
www.sql.org
Здесь можно найти официальную информацию о языке SQL.
Отчеты  ошибках
 ошибках
Разработчики MySQL ведутспециальный список рассылки (bugs@l ists  com), в котором публикуются отчеты об ошибках программы. Можно самостоятельно посылать туда свои сообщения, но лучше пользоваться сценарием
 com), в котором публикуются отчеты об ошибках программы. Можно самостоятельно посылать туда свои сообщения, но лучше пользоваться сценарием  который способен
 который способен  томатически генерировать информацию о системе. Чем точнее будут сведения о конфи гурации, тем проще будет разработчикам разобраться в проблеме.
 томатически генерировать информацию о системе. Чем точнее будут сведения о конфи гурации, тем проще будет разработчикам разобраться в проблеме.
Прежде чем сообщать об ошибке, проверьте интерактивную документацию. Неко торые проблемы уже известны и описаны, особенно те, которые касаются особенно стей конкретных операционных систем. На Web узлах можно также встретить ком ментарии пользователей.
Далее обратитесь в архивы списков рассылки. Не исключено, что с подобной  блемой уже
 блемой уже  сталкивался . Ответы на жалобы пользователей быстро публикуют ся в списках.
 сталкивался . Ответы на жалобы пользователей быстро публикуют ся в списках.
В разделе 1.6.2.3 интерактивной документации описано, какую информацию необ ходимо включить в отчет об ошибке.
 
ПРАВОВЫЕ
АСПЕКТЫ
В этом 
Лицензирование программы MySQL Общая лицензия GNU
Стабильность
 
вэтом приложении рассматриваются вопросы, касающиеся коммерческого ис пользования программы MySQL.
ЛицензированиепрограммыMySQL
Текущие версии MySQL доступны на условиях общей лицензии GNU (GNU Gen eral Public License), которая широко популярна при распространении программ с открытыми исходными кодами. Любой пользователь может свободно использовать и модифицировать программу без каких либо ограничений, при условии, что програм ма не передается другим пользователям. В случае распространения программы может потребоваться придерживаться определенных ограничений. Как правило, если  грамма модифицируется, то наряду с откомпилированной версией необходимо рас пространять также ее исходные коды. Этого можно избежать, если приобрести у компании MySQL
 грамма модифицируется, то наряду с откомпилированной версией необходимо рас пространять также ее исходные коды. Этого можно избежать, если приобрести у компании MySQL  коммерческую лицензию. Информация о процедуре получения лицензии доступна на
 коммерческую лицензию. Информация о процедуре получения лицензии доступна на  компании. Следует отметить, что стоимость
 компании. Следует отметить, что стоимость  ческой лицензии невысока в сравнении с другими СУБД.
 ческой лицензии невысока в сравнении с другими СУБД.
Ниже приведен текст общей лицензии GNU. Дополнительную информацию о ней можно найти на

ОбщаялицензияGNU
Версия  июнь 1991 года
 июнь 1991 года
Copyright ©  Free Software Foundation, Inc. 675 Mass
 Free Software Foundation, Inc. 675 Mass  Cambridge, MA
 Cambridge, MA  USA
 USA
Разрешается копирование и распространение копий этого документа, но запреща ется внесение каких бы то ни было изменений в его текст.





 ведет несколько списков рассылки, посвященных MySQL. Большинство из них доступно в виде дайджестов, т.е. каждый день присылается письмо, содержащее список сообщений за последние 24 часа. Чтобы подписаться на список, отправьте пустое письмо по специальному адресу список subscribe
 ведет несколько списков рассылки, посвященных MySQL. Большинство из них доступно в виде дайджестов, т.е. каждый день присылается письмо, содержащее список сообщений за последние 24 часа. Чтобы подписаться на список, отправьте пустое письмо по специальному адресу список subscribe  Если нужно подписаться на получение дайджеста, добавьте к имени списка суффикс digest. В ответ сервер рассылки пришлет подтверждающее письмо, на которое нужно ответить. Свои сообщения шлите на сервер, указывая имя списка, например
 Если нужно подписаться на получение дайджеста, добавьте к имени списка суффикс digest. В ответ сервер рассылки пришлет подтверждающее письмо, на которое нужно ответить. Свои сообщения шлите на сервер, указывая имя списка, например  Чтобы отказаться от рассылки, отпра вьте пустое письмо по адресу
 Чтобы отказаться от рассылки, отпра вьте пустое письмо по адресу 
 com.
 com. mysql.com
mysql.com mysql.com
mysql.com com.
 com. com
 com щий:
 щий: 
 mysql. com
 mysql. com имущественно посвященный JDBC. Адрес для получения дайджестов следующий:
 имущественно посвященный JDBC. Адрес для получения дайджестов следующий: mysql. com
mysql. com

 mysql. com
mysql. com com.
 com.
 mysql. com
mysql. com

 связанную с MySQL, могут заглянуть в архивы списковрассылки, где часто можно найти ответы на самые каверзные вопросы.
 связанную с MySQL, могут заглянуть в архивы списковрассылки, где часто можно найти ответы на самые каверзные вопросы.