П О Р Т А Л                            
С Е Т Е В Ы Х                          
П Р О Е К Т О В                        
  
Поиск по сайту:
                                                 
Главная

О проекте

Web-мастеру
     HTML & JavaScript
     SSI
     Perl
     PHP
     XML & XSLT
     Unix Shell

MySQL

Безопасность

Хостинг

Другое








Самое читаемое:

Учебник PHP - "Для Чайника".
Просмотров 3409 раз(а).

Иллюстрированный самоучитель по созданию сайтов.
Просмотров 5958 раз(а).

Учебник HTML.
Просмотров 3204 раз(а).

Руководство по PHP5.
Просмотров 5420 раз(а).

Хостинг через призму DNS.
Просмотров 4018 раз(а).

Подборка текстов стандартных документов.
Просмотров 55710 раз(а).

Учебник PHP - Самоучитель
Просмотров 2996 раз(а).

Документация на MySQL (учебник & справочное руководство)
Просмотров 4573 раз(а).

Внешние атаки...
Просмотров 3732 раз(а).

Учебник PHP.
Просмотров 2767 раз(а).

SSI в примерах.
Просмотров 37384 раз(а).



 
 
| Добавить в избранное | Сделать стартовой | Помощь





Глава 9. Расширение MySQL
Пред.     След.

9.2. Добавление новых функций в MySQL
9.2.2. Добавление новой определяемой пользователем функции

9.2.2.3. Обработка аргументов

Параметр args указывает на структуру UDF_ARGS, содержащую перечисленные ниже поля:

  • unsigned int arg_count

    Количество аргументов. Это значение следует проверять в функции инициализации, если необходимо, чтобы функция вызывалась с определенным количеством аргументов. Например:

    if (args->arg_count != 2)
    {
      strcpy(message,"XXX() requires two arguments");
      return 1;
    }
    
  • enum Item_result *arg_type

    Тип для каждого аргумента. Возможные значения типа: STRING_RESULT, INT_RESULT и REAL_RESULT. Чтобы контролировать принадлежность аргументов к нужному типу и возвращать ошибку, если это не так, следует проверить массив arg_type в функции инициализации. Например:

    if (args->arg_type[0] != STRING_RESULT ||
    args->arg_type[1] != INT_RESULT)
    {
      strcpy(message,"XXX() requires a string and an integer");
      return 1;
    }
    

    В качестве альтернативы требованию, чтобы аргументы были определенного типа, можно использовать функцию инициализации для назначения элементам arg_type выбранных типов. В этом случае MySQL будет приводить аргументы к этим типам для каждого вызова xxx(). Например, чтобы указать на приведение первых двух аргументов к строковому и целочисленному типам, выполните в xxx_init():

    args->arg_type[0] = STRING_RESULT;
    args->arg_type[1] = INT_RESULT;
    
  • char **args

    args->args передает в функцию инициализации информацию общего характера об аргументах, с которыми была вызвана функция. Для константного аргумента i args->args[i] указывает на значение аргумента (ниже приведены инструкции о том, как правильно получать доступ к значениям). Для неконстантого аргумента args->args[i] есть 0. Константный аргумент - это выражение, в котором используются только константы, вроде 3 или 4*7-2 или SIN(3.14). Неконстантный аргумент - это выражение, ссылающееся на значения, которые могут изменяться от строки к строке, такие как имена столбцов или обращения к функциям с неконстантными аргументами.

    Для каждого вызова главной функции args->args содержит фактические аргументы, переданные для обрабатываемой в данный момент строки.

    Функции могут ссылаться на аргумент i следующим образом:

    • Аргумент типа STRING_RESULT передается в виде указателя на строку плюс длина, чтобы обеспечить обработку двоичных данных или данных произвольной длины. Содержимое строки доступно посредством args->args[i], а длина строки представляет собой args->lengths[i]. Не следует исходить из предположения, что символ \0 отмечает конец строки.

    • Для аргумента типа INT_RESULT необходимо привести args->args[i] к значению типа long long:

      long long int_val;
      int_val = *((long long*) args->args[i]);
      
    • Для аргумента типа REAL_RESULT необходимо привести args->args[i] к значению типа double:

      double real_val;
      real_val = *((double*) args->args[i]);
      
  • unsigned long *lengths

    Для функции инициализации массив lengths указывает максимальную длину строки для каждого аргумента. Изменять этот массив нельзя. При каждом вызове главной функции lengths содержит фактические длины всех строковых аргументов, переданных для обрабатываемой в текущий момент строки. Для типов аргументов INT_RESULT или REAL_RESULT lengths также содержит максимальную длину аргумента (как для функции инициализации).


Назад Начало Главы Начало Раздела Начало Подраздела Вперед

Пред. Глава След. Глава
Глава 8. Интерфейсы для MySQL Начало Книги Приложение A. Проблемы и распространенные ошибки


Если Вы не нашли что искали, то рекомендую воспользоваться поиском по сайту:
 





Copyright © 2005-2016 Project.Net.Ru