sqlite_create_aggregateSQLiteDatabase::createAggregate(PHP 5, PECL sqlite >= 1.0.0) sqlite_create_aggregate -- SQLiteDatabase::createAggregate — Регистрирует агрегирующую функцию для использования в SQL-запросах Описание
   void sqlite_create_aggregate
    ( resource $dbhandle
   , string $function_name
   , callback $step_func
   , callback $finalize_func
   [, int $num_args = -1
  ] ) 
  Объектно-ориентированный стиль (метод): 
   void SQLiteDatabase::createAggregate
    ( string $function_name
   , callback $step_func
   , callback $finalize_func
   [, int $num_args = -1
  ] ) 
  sqlite_create_aggregate() похожа на sqlite_create_function(), за исключением того, что регистрирует функцию, которая может быть использована для вычисления результата на основе всех записей результата запроса. Главное отличие этой функции от sqlite_create_function() состоит в том, что для работы агрегирующей функции неоходимы 2 функции; step_func вызывается для каждой записи из результата запроса. Эта функция должна аккумулировать результат и сохранять его в контекстной переменной. После обработки всех записей, вызывается finalize_func, которая должна обработать данные из контекстной переменной и вернуть результат. Callback-функции должны возвращать тип, который сможет понять SQLite (т.е. скалярный). Список параметров
 
 Возвращаемые значенияЭта функция не возвращает значения после выполнения. Примеры
 Пример #1 Пример агрегирующей функции max_length 
<?phpВ этом примере, мы создаем агрегирующую функцию, коорая возвращает длину самой длинной строки в одном из полей результата запроса. Для каждой записи, вызывается функция max_len_step, которой помимо строки передается контекстная переменная context. Эту переменню вы можете использовать по своему усмотрению для накопления результатов вычислений. В нашем примере, в этой переменной хранится максимальная длина строки; если длина строки string больше, чем значение, сохраненное в контекстной переменной, контекстной переменной присваивается новое значение. После обработки всех записей, SQLite вызовет функцию max_len_finalize для определения результата агрегирующей функции. Здесь можно было бы провести вычисления, основанные на значении контекстной переменной context, но в этом простейшем примере, все вычисления были произведены в процессе обработки запроса, и остается только вернуть полученное значение. 
 Подсказка
    
  НЕ РЕКОМЕНДУЕТСЯ сохранять все полученные значения в контекстной переменной и затем производить все вычисления на последнем шаге, так как при этом SQLite может израсходовать большое количество памяти в процессе обработки запроса - представьте, сколько памяти потребуется, чтобы сохранить в памяти миллион записей, по 32 байта каждая. Подсказка
    
 sqlite_create_function() и sqlite_create_aggregate() могут быть использованы для переопределения встроенных функций SQLite. Смотрите также
 
  | 
||