Estoy desarrollando una aplicación en Android y necesito crear un udf en sqlite. ¿Es posible crearlo en sqlite? Y si es así, ¿cómo hacer esto?
SQLite no tiene soporte para funciones definidas por el usuario en la forma en que lo hace Oracle o MS SQL Server. Para SQLite, debe crear una función de callback en C / C ++ y conectar la función usando la llamada sqlite3_create_function .
Desafortunadamente, la API SQLite para Android no permite la llamada sqlite3_create_function
directamente a través de Java. Para que funcione, deberá comstackr la biblioteca SQLite C con el NDK .
Y si todavía está interesado, lea 2.3 Funciones definidas por el usuario …
A continuación se explica cómo crear una función que encuentre el primer byte de una cadena.
static void firstchar(sqlite3_context *context, int argc, sqlite3_value **argv) { if (argc == 1) { char *text = sqlite3_value_text(argv[0]); if (text && text[0]) { char result[2]; result[0] = text[0]; result[1] = '\0'; sqlite3_result_text(context, result, -1, SQLITE_TRANSIENT); return; } } sqlite3_result_null(context); }
Luego adjunte la función a la base de datos.
sqlite3_create_function(db, "firstchar", 1, SQLITE_UTF8, NULL, &firstchar, NULL, NULL)
Finalmente, use la función en una statement SQL.
SELECT firstchar(textfield) from table
No válido – ver comentarios
Debería ser posible con SQLiteCustomFunction desde Android sdk 17 que le proporciona una callback en código Java.
Agregar con el método addCustomFunction en SQLiteDatabase .
Pero debo decir que no tengo experiencia con eso …