sqlite_create_aggregateОписаниеbool sqlite_create_aggregate ( resource dbhandle, string function_name, mixed step_func, mixed finalize_func [, int num_args] )sqlite_create_aggregate() похожа на sqlite_create_function(), за исключением того, что регистрирует функцию, которая может быть использована для вычисления результата на основе всех записей результата запроса. Главное отличие этой функции от sqlite_create_function() состоит в том, что для работы агрегатной функции неоходимы 2 функции; step_func вызывается для каждой записи из результат запроса. Эта функция должна аккумулировать результат и сохранять его в контекстной переменной. После обработки всех записей, вызывается finalize_func, которая должна обработать данные из контекстной переменной и вернуть результат.
В этом примере, мы создаем агрегатную функцию, коорая возвращает длину самой длинной строки в одном из полей результата запроса. Для каждой записи, вызывается функция max_len_step, которой помимо строки передается контекстная переменная context. Эту переменню вы можете использовать по своему усмотрению для накопления результатов вычислений. В нашем примере, в этой переменной хранится максимальная длина строки; если длина строки string больше, чем значение, сохраненное в контекстной переменной, контекстной переменной присваивается новое значение. После обработки всех записей, SQLite вызовет функцию max_len_finalize для определения результата агрегатной функции. Здесь можно было бы провести вычисления, основанные на значении контекстной переменной context, но в этом простейшем примере, все вычисления были произведены в процессе обработки запроса, и остается только вернуть полученное значение.
| ||||||||||
|